stream流reduce方法
时间: 2023-06-21 15:06:28 浏览: 118
Stream流常用方法
在 Java 8 中,流(Stream)提供了一种更加简便的方式来对集合进行操作。其中,reduce 方法就是流中的一个重要方法,可以用于求和、求最大值、求最小值等。
reduce 方法有两个重载方法:
1. T reduce(T identity, BinaryOperator<T> accumulator)
这个方法接收一个初始值和一个二元运算符(BinaryOperator),返回一个计算结果。方法从初始值开始,将流中的元素依次与初始值进行运算,并将每次运算的结果作为下一次运算的初始值,直到流中的所有元素都运算完毕。
例如,下面的代码可以求一个整数列表的和:
```
List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);
int sum = list.stream().reduce(0, Integer::sum);
System.out.println(sum); // 输出 15
```
2. Optional<T> reduce(BinaryOperator<T> accumulator)
这个方法只接收一个二元运算符(BinaryOperator),返回一个 Optional 类型的计算结果。方法从流中的第一个元素开始,将每个元素依次与下一个元素进行运算,直到流中的所有元素都运算完毕。
例如,下面的代码可以求一个整数列表中的最大值:
```
List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);
Optional<Integer> max = list.stream().reduce(Integer::max);
System.out.println(max.get()); // 输出 5
```
需要注意的是,如果流为空,reduce 方法会返回一个空的 Optional 对象。因此,在使用 reduce 方法时,应该先检查 Optional 对象是否为空,再进行操作。
阅读全文