Java Lambda reduce 例子 全网reduce最清晰易懂的例子,不服来辩 xxx XXX
import java.util.Optional;
import java.util.stream.Stream;
public class LambdaReduce {
public static void main(String[] args) {
//reduce 方法 一个参数
Optional<Integer> reduceA = Stream.of(1, 2, 3, 4).reduce((sum, num) -> sum + num);
System.out.println(reduceA.get()); // 10
//reduce 方法 两个参数
Integer reduceB = Stream.of(1, 2, 3, 4).reduce(0, (sum, num) -> sum + num);
System.out.println(reduceB); // 10
//reduce 方法 三个个参数
Integer reduceC = Stream.of(1, 2, 3, 4).reduce(0, (sum, num) -> sum + num, (sum, num) -> sum +num);
System.out.println(reduceC); // 10
//【注意】第三个参数并没有参与运算,参数3: 没有任何输出
Integer reduceD = Stream.of(1, 2, 3, 4).reduce(0, (sum, num) -> {
System.out.println("参数2: " + num);
return sum + num;
}, (sum, num) -> {
System.out.println("参数3: " + num);
return sum + num;
});
System.out.println(reduceD); // 10
//给定初始结果值,第二个参数和第三个参数都参与了运算
//只有在并行parallel()下才会用到第三个参数
Integer reduceE = Stream.of(1, 2, 3, 4).parallel().reduce(0, (sum, num) -> {
System.out.println("参数2: " + num);
return sum + num;
}, (sum, num) -> {
System.out.println("参数3: " + num);
return sum + num;
});
System.out.println(reduceE); // 10
}
}
10
10
10
参数2: 1
参数2: 2
参数2: 3
参数2: 4
10
参数2: 3
参数2: 4
参数2: 2
参数2: 1
参数3: 2
参数3: 4
参数3: 7
10