恕我直言你可能真的不会java第10篇-集合元素归约
Stream API为我们提供了 Stream.reduce 用来实现集合元素的归约。reduce函数有三个参数: Identity标识 :一个元素,它是归约操作的初始值,如果流为空,则为默认结果。 Accumulator累加器 :具有两个参数的函数:归约运算的部分结果和流的下一个元素。 Combiner合并器(可选) :当归约并行化时,或当累加器参数的类型与累加器实现的类型不匹配时,用于合并归约操作的部分结果的函数。 注意观察上面的图,我们先来理解累加器: 阶段累加结果作为累加器的第一个参数 集合遍历元素作为累加器的第二个参数 Integer类型归约 reduce初始值为0,累加器可以是lambda表达式,也可以是方法引用。 List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6); int result = numbers .stream() .reduce(0, (subtotal, element) -> subtotal + element); System.out.println(result); //21 int result = numbers .stream() .reduce(0, Integer::sum); System.out.println(result); //21 String类型归约