使用Java Stream筛选集合的简便方法

我一直是C#中Linq的忠实拥护者(有一天我们将谈论Linq)。 在Java中,类似于Linq的东西称为Stream。 因为我目前的大部分工作都涉及Java,所以我想我将首先讨论Java Stream。

什么是流

Java 8中引入了它,它是一个新的抽象层,使我们能够以声明的方式处理数据。 此功能是由Java 8中还引入的Lambda表达式构建的。Stream表示我们能够应用聚合操作的一系列对象。 其中一些操作包括filtermapflatmaplimitreducefindmatch等。 通过使用Stream,我们不必自己处理那些聚合操作,这可以节省我们的时间。

动手

没有示例的解释将毫无用处。 因此,假设我们有一个名为posts列表,其中包含来自网站的文章列表。 然后,假设我们要获得作者为“ Haydar”的文章。 通常,我们会做这样的事情。

在这种情况下,它看起来仍然很简单。 但是,如果情况变得复杂,该怎么办。 这会使代码看起来混乱。 这是Stream救援的地方!

通过使用Stream,我们可以使用类似这样的东西。

简单得多吧? 我们不必手动进行迭代,并且更具可读性。 第3行上的代码实际上只是将Java List转换为Stream对象,如果我们已经将其转换为Stream对象,则可以执行聚合操作。 然后,过滤器位于第4行,基本上,我们告诉它仅提取作者名称为“ Haydar”的post 。 之后,第5行基本上会返回到Stream对象作为列表。

包起来

在这一点上,似乎并没有优化我们需要编写的字符数。 因为示例操作只是通过两种方式都容易实现。 接下来,我们将访问Java Stream用法的几个示例,这些示例将为处理聚合操作提供更好的方法。 感谢您的阅读。

参考文献

java.util.stream(Java Platform SE 8)
延迟处理流可显着提高效率; 在上面的filter-map-sum示例之类的管道中…… docs.oracle.com Java 8流
Java8 Streams –从概述,环境设置,Lambda表达式……开始以简单易懂的步骤学习 Java8。www.tutorialspoint.com winterbe.com
通过示例学习Java 8流:具有过滤器,地图,flatMap,reduce,collect,lambda,顺序的函数式编程 winterbe.com