前言
所谓归约,在JDK8中,有着独特的解释,那就是将查询、筛选出的值,无论多个还是一个,将这些值归为一个值,有种压缩的意思。
下面我们就来看一下具体的示例吧。
JDK8之stream流的使用:归约类方法
归约类方法,其实在我们日常开发中,也会经常遇到使用他们的场景,比如集合求和,集合取最大值,集合取最小值,等等。
这些方法,其实从归约类方法中都可以实现。
求和
先说一个for循环如何来求和的吧。
public static void main(String[] args) { List<Integer> list = new ArrayList<>(); list.add(1); list.add(2); list.add(3); list.add(4); list.add(5); int num = 0; for (Integer i : list){ num += i; } System.out.println(num); }
由此我们就可以得到一个总和了。
那么在stream中,是如何实现的呢,其实stream的求和方法是reduce方法,我们可以通过reduce方法,将List集合中的值归到一个值上。
来看一下代码示例:
public static void main(String[] args) { List<Integer> list = new ArrayList<>(); list.add(1); list.add(2); list.add(3); list.add(4); list.add(5); int num = 0; list.stream().reduce(Integer::sum).get(); System.out.println(num); }
上述代码就可以将最后的和得出来了。
从此处开始延伸,reduce中传入的参数,是一个类型,后面跟着一个方法名sum。
这个sum是代表着求和,那是不是还有其他的方法。
当然了,常用的有以下这么几种,有些方法大家可以自行去试一下。
1.max
获取最大值
2.min
获取最小值
3.compare
值比较
分别是以下代码的使用方式。
System.out.println(list.stream().reduce(Integer::max).get()); System.out.println(list.stream().reduce(Integer::min).get()); System.out.println(list.stream().reduce(Integer::compare).get()); System.out.println(list.stream().reduce(Integer::compareTo).get());
总结
今天我们学习了JDK8中stream流的归约类方法,从此使用集合时,不用再去使用for循环进行求和,获取最大、最小值了,开发将会更加便捷。