一. 简介:
reduce–归约操作,函数依次作用于上一次函数的结果(有初始值则第一次为初始值)和流中的下一个元素
例如:
二. 操作:
-
代码:
package com.chengxi.java_new_characteristics.stream; import java.util.Optional; import java.util.stream.Stream; /** * @author chengxi * @date 2019/5/5 15:30 */ public class StreamReduce { public static void main(String[] args) { // 一个参数遍历求结果,这个参数是计算规则 Optional<Integer> reduce = Stream.of(1, 2, 3).reduce((x, m) -> x += m); System.out.println(reduce); // 两个参数,新加的第一个参数是初始值 System.out.println(Stream.of(1,2,34,1).reduce(100,(x,y) -> x+= y)); // 求流中的最大值,如果给定初始值那么流中的比较带上初始值进行比较,第二种是简写,其中的integer取得是前面流中默认的数字,引用获取求值方法 System.out.println("Max: "+Stream.of(1,2,34,1).reduce(100,(x,y) -> Math.max(x,y))); System.out.println("Max: "+Stream.of(1,2,34,1).reduce(Integer::max)); // 求最小值 System.out.println("Max: "+Stream.of(1,2,34,1).reduce((x,y) -> Math.min(x,y))); System.out.println("Max: "+Stream.of(1,2,34,1).reduce(Integer::min)); // 求和,是第一个的简写 System.out.println("sum:"+Stream.of(1,2,34,1).reduce(100,Integer::sum)); // 没有初始值求和 System.out.println(Stream.of(1, 2, 34, 1).reduce(Integer::sum).orElse(0)); // 使用Optional 类,Optional类是一个包装非空对象的容器类型。Optional对象使用缺失值表示null值,其表达的意思即为值有可能为null。意在在java系统中减少空指针异常。 Optional<Integer> integer = Optional.of(1); Optional<String> s = Optional.of("2"); } }
-
结果:
Optional[6] 138 Max: 100 Max: Optional[34] Max: Optional[1] Max: Optional[1] sum:138 38
小熙抒写的这篇Reduce是承接上篇Java8新特性之Streams练习抒写笔记的后续,个人摸索难免出错,欢迎联系指正。