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

相关推荐
sino爱学习30 分钟前
高性能线程池实践:Dubbo EagerThreadPool 设计与应用
java·后端
风生u1 小时前
activiti7 详解
java
岁岁种桃花儿1 小时前
SpringCloud从入门到上天:Nacos做微服务注册中心(二)
java·spring cloud·微服务
Word码1 小时前
[C++语法] 继承 (用法详解)
java·jvm·c++
TT哇1 小时前
【实习 】银行经理端两个核心功能的开发与修复(银行经理绑定逻辑修复和线下领取扫码功能开发)
java·vue.js
逝水如流年轻往返染尘1 小时前
Java中的数组
java
java1234_小锋2 小时前
Java高频面试题:BIO、NIO、AIO有什么区别?
java·面试·nio
用户8307196840822 小时前
Java IO三大模型(BIO/NIO/AIO)超详细总结
java
sheji34162 小时前
【开题答辩全过程】以 基于SSM的花店销售管理系统为例,包含答辩的问题和答案
java
Mr_sun.2 小时前
Day09——入退管理-入住-2
android·java·开发语言