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

相关推荐
Le1Yu4 分钟前
消息队列以及RabbitMQ的使用
java·开发语言
羚羊角uou15 分钟前
【Linux】线程池
java·开发语言
阿拉-M8322 分钟前
IntelliJ IDEA Windows 系统高频快捷键使用手册
java·windows·intellij-idea
lingggggaaaa39 分钟前
小迪安全v2023学习笔记(一百三十四讲)—— Windows权限提升篇&数据库篇&MySQL&MSSQL&Oracle&自动化项目
java·数据库·windows·笔记·学习·安全·网络安全
迦蓝叶1 小时前
JAiRouter v1.0.0 正式发布:企业级 AI 服务网关的开源解决方案
java·运维·人工智能·网关·spring·ai·开源
安卓开发者1 小时前
鸿蒙NEXT应用接入快捷栏:一键直达,提升用户体验
java·harmonyos·ux
yudiandian20141 小时前
03 Eclipse 配置 JDK 环境
java·ide·eclipse
_码力全开_1 小时前
P1005 [NOIP 2007 提高组] 矩阵取数游戏
java·c语言·c++·python·算法·矩阵·go
陈一Tender1 小时前
JavaWeb后端实战(登录认证 & 令牌技术 & 拦截器 & 过滤器)
java·开发语言·spring boot·mysql