linq 入门介绍-更加优雅的流式集合处理

拓展阅读

linq
querydsl

LINQ

术语"LINQ to Objects"指直接将 LINQ 查询与任何 IEnumerable<T> 集合一起使用。

可以使用 LINQ 来查询任何可枚举的集合,例如 Primitive Array、Object Array、 List、 Collection 或 Iterable 等等。

该集合可以是用户定义的集合,也可以是由 Java 开发包 API 返回的集合。

从根本上说,"LINQ to Objects"表示一种新的处理集合的方法。 采用 LINQ 方法,只需编写描述要检索的内容的声明性代码。

特性

  • 实现了 LINQ to Objects 的所有 API。

  • 支持更多 API 和元组。

  • 支持 IEnumerable 和 Stream 互相转换。

  • 支持 Android。

入门例子

Maven

xml 复制代码
<dependency>
    <groupId>com.bestvike</groupId>
    <artifactId>linq</artifactId>
    <version>6.0.0</version>
</dependency>

用法

如果使用 java 8 或 java 9,建议用 lombok.var 或 lombok.val 代替复杂的返回类型。

如果使用 java 10 或更高版本,建议使用 var 代替复杂的返回类型。

拼接不为空的字符串。

java 复制代码
String result = Linq.of("!@#$%^", "C", "AAA", "", "Calling Twice", "SoS", Empty)
        .where(x -> x != null && x.length() > 0)
        .aggregate((x, y) -> x + ", " + y);

System.out.println(result);


----
!@#$%^, C, AAA, Calling Twice, SoS

判断所有的正数是否全部为偶数。

java 复制代码
boolean result = Linq.of(9999, 0, 888, -1, 66, -777, 1, 2, -12345)
        .where(x -> x > 0)
        .all(x -> x % 2 == 0);

System.out.println(result);
----
false

判断所有的正数是否存在任一偶数。

java 复制代码
boolean result = Linq.of(9999, 0, 888, -1, 66, -777, 1, 2, -12345)
        .where(x -> x > 0)
        .any(x -> x % 2 == 0);

System.out.println(result);
----
true

在末尾追加一个数字并在头部插入两个数字。

java 复制代码
String result = Linq.range(3, 2).append(5).prepend(2).prepend(1).format();

System.out.println(result);
----
[1, 2, 3, 4, 5]

计算整数序列的平均值。

java 复制代码
double result = Linq.of(5, -10, 15, 40, 28).averageInt();

System.out.println(result);
----
15.6

连接两个整数序列。

java 复制代码
String result = Linq.of(1, 2).concat(Linq.of(3, 4)).format();

System.out.println(result);
----
[1, 2, 3, 4]

参考资料

github.com/timandy/lin...

本文由博客一文多发平台 OpenWrite 发布!

相关推荐
码路飞3 小时前
GPT-5.3 Instant 终于学会好好说话了,顺手对比了下同天发布的 Gemini 3.1 Flash-Lite
java·javascript
SimonKing3 小时前
OpenCode AI编程助手如何添加Skills,优化项目!
java·后端·程序员
Seven975 小时前
剑指offer-80、⼆叉树中和为某⼀值的路径(二)
java
怒放吧德德16 小时前
Netty 4.2 入门指南:从概念到第一个程序
java·后端·netty
雨中飘荡的记忆18 小时前
大流量下库存扣减的数据库瓶颈:Redis分片缓存解决方案
java·redis·后端
心之语歌20 小时前
基于注解+拦截器的API动态路由实现方案
java·后端
华仔啊21 小时前
Stream 代码越写越难看?JDFrame 让 Java 逻辑回归优雅
java·后端
ray_liang1 天前
用六边形架构与整洁架构对比是伪命题?
java·架构
Ray Liang1 天前
用六边形架构与整洁架构对比是伪命题?
java·python·c#·架构设计
Java水解1 天前
Java 中间件:Dubbo 服务降级(Mock 机制)
java·后端