在Java 8 里面,我们看到了有个reduce方法,具体也不知道是干啥的,我就简单的用几个实例,看看,这方法到底是干什么的。
Java 8 湿胸我也就处于摸索阶段。慢慢摸索嘛,不着急。
话不多说,看代码。
/** * T reduce(T identity, BinaryOperator<T> accumulator); * identity:它允许用户提供一个循环计算的初始值。 * accumulator:计算的累加器, */ private static void testReduce() { //T reduce(T identity, BinaryOperator<T> accumulator); System.out.println("给定个初始值,求和"); System.out.println(Stream.of(1, 2, 3, 4).reduce(100, (sum, item) -> sum + item)); System.out.println(Stream.of(1, 2, 3, 4).reduce(100, Integer::sum)); System.out.println("给定个初始值,求min"); System.out.println(Stream.of(1, 2, 3, 4).reduce(100, (min, item) -> Math.min(min, item))); System.out.println(Stream.of(1, 2, 3, 4).reduce(100, Integer::min)); System.out.println("给定个初始值,求max"); System.out.println(Stream.of(1, 2, 3, 4).reduce(100, (max, item) -> Math.max(max, item))); System.out.println(Stream.of(1, 2, 3, 4).reduce(100, Integer::max)); //Optional<T> reduce(BinaryOperator<T> accumulator); // 注意返回值,上面的返回是T,泛型,传进去啥类型,返回就是啥类型。 // 下面的返回的则是Optional类型 System.out.println("无初始值,求和"); System.out.println(Stream.of(1, 2, 3, 4).reduce(Integer::sum).orElse(0)); System.out.println("无初始值,求max"); System.out.println(Stream.of(1, 2, 3, 4).reduce(Integer::max).orElse(0)); System.out.println("无初始值,求min"); System.out.println(Stream.of(1, 2, 3, 4).reduce(Integer::min).orElse(0)); } 代码运行结果:乍一看,上面好像,也就是对数据的操作,例子里面有求和的,求最大值的,求最小值的。就这三个
有疑问的,就是这个返回值类型,其中有个是 Optional 类。
这个类是从Java 8 开始,才有的。他就是为了防止出现空值,也就是null。