这些天我一直在大量使用Java Stream API。所以我想,为什么不写一个简短的教程呢。
那么什么是蒸汽呢?
不要与 Java IO 的 InputStream 或 OutputStream 混淆。 Stream 在 Java 8 中是完全不同的东西。
流基本上表示一系列元素,并提供一组丰富的操作来计算这些元素。
在我们的日常业务应用程序中进行批量操作很常见。所以通常我们确实使用 for 循环和集合来做到这一点,我们遍历集合然后编写 if then else 代码和各种变量发挥作用,我们得到一大块丑陋的顺序代码。
我们使用流 API 做同样的事情,但可以使用 lambda 和函数方法将事物抽象到一个非常高的层次,并编写更优雅、更易理解和更干净的代码。有了一定的抽象之后,我们可以做一定的优化,比如我们可能想要并行,这在以前是不容易的。
好吧,让我们做一些代码示例 -
1. 首先,让我们使用 IntStream 删除常规的 for 循环。我想要做的是,打印 1 到 10-
IntStream.range(0, 10)
.forEach(value -> System.out.println(value));
或者只是使用方法参考-
IntStream.range(0, 10)
.forEach(value -> System.out.println(value));
2.我想计算列表中元素的数量——
IntStream.range(0, 10)
.forEach(value -> System.out.println(value));
3. 我想找到列表中所有元素的平均值 -
IntStream.range(0, 10)
.forEach(value -> System.out.println(value));
4.我想得到完整的清单摘要
IntStream.range(0, 10)
.forEach(value -> System.out.println(value));
5.从列表中创建地图
IntStream.range(0, 10)
.forEach(value -> System.out.println(value));
6.我想获取列表的最大数量
IntStream.range(0, 10)
.forEach(value -> System.out.println(value));
7. 假设我有一个名字数组,我想计算所有以“C”开头的名字
IntStream.range(0, 10)
.forEach(value -> System.out.println(value));
8.假设我想把所有的名字都变成大写和排序然后打印
IntStream.range(0, 10)
.forEach(value -> System.out.println(value));
一个提前的例子
假设我有一个名为 Person 的类 ->
IntStream.range(0, 10)
.forEach(value -> System.out.println(value));
9.我想按年龄分组
IntStream.range(0, 10)
.forEach(value -> System.out.println(value));
10 我想得到所有人的平均年龄
IntStream.range(0, 10)
.forEach(value -> System.out.println(value));
待续...