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 发布!

相关推荐
寻星探路4 小时前
【深度长文】万字攻克网络原理:从 HTTP 报文解构到 HTTPS 终极加密逻辑
java·开发语言·网络·python·http·ai·https
曹牧6 小时前
Spring Boot:如何测试Java Controller中的POST请求?
java·开发语言
爬山算法7 小时前
Hibernate(90)如何在故障注入测试中使用Hibernate?
java·后端·hibernate
kfyty7257 小时前
集成 spring-ai 2.x 实践中遇到的一些问题及解决方案
java·人工智能·spring-ai
猫头虎7 小时前
如何排查并解决项目启动时报错Error encountered while processing: java.io.IOException: closed 的问题
java·开发语言·jvm·spring boot·python·开源·maven
李少兄7 小时前
在 IntelliJ IDEA 中修改 Git 远程仓库地址
java·git·intellij-idea
忆~遂愿8 小时前
ops-cv 算子库深度解析:面向视觉任务的硬件优化与数据布局(NCHW/NHWC)策略
java·大数据·linux·人工智能
小韩学长yyds8 小时前
Java序列化避坑指南:明确这4种场景,再也不盲目实现Serializable
java·序列化
仟濹8 小时前
【Java基础】多态 | 打卡day2
java·开发语言
Re.不晚8 小时前
JAVA进阶之路——无奖问答挑战2
java·开发语言