一.Stream流
Java8的Stream使用的是函数是编程模式,如同它的名字一样,它可以被用来对集合或数组进行链状流式的操作。可以更方便的让我们对集合或数组操作。
注意:stream流必须有终结操作
二.集合或数组使用stream流
1.单列集合
集合对象.stream()
2.数组
Arrays.stream(数组)或者使用stream.of来创建
3.双列集合
转换成单列集合后再创建
三.stram流之中间操作
1.filter
可以对流中的元素进行条件过滤,符合过滤条件的才能继续留在流中。
2.map
可以把对流中的元素进行计算或转换。
3.distinct
可以去除流中的重复元素
注意:distinct方法是依赖Object的equals方法来判断是否是相同对象的。所以需要注意重写equals方法 .
4.sorted
可以对流中的元素进行排序
5.limit
可以设置流的最大长度,超出的部分将被抛弃
6.skip
跳过流中的前n个元素,返回剩下的元素
7.flagMap
map只能把一个对象转换成另一个对象来作为流中的元素。而flagMap可以把一个对象转换成多个对象作为流中的元素。
四.stram流之终结操作
1.forEach
对流中的元素进行遍历操作,我们通过传入的参数去指定对遍历到的元素进行什么具体操作。
2.count
可以用来获取当前流中元素的个数
3.max&min
可以用来获得流中的最值
4.collect
把当前流做换成一个集合,通常用来收集流
五.查找与匹配
1.anyMatch
可以用来判断是否有任意符合匹配条件的元素,结果为boolean类型。
2.allMatch
可以用来判断是否都符合匹配条件,结果为boolean类型。如果都符合结果为true,否则结果为false。
3.noneMatch
可以判断流中的元素是否都不符合匹配条件。如果都不符合结果为true,否则为false。
4.findAny
获取流中的任意一个元素。该方法没有办法保证获取的一定是流中的第一个元素。
5.findFirst
获取流中的第一个元素
6.reduce归并
对流中的数据按照你指定的计算方式计算出一个结果。
reduce的作用是把stream中的元素给组合起来,我们可以传入一个初始值,它会按照我们的计算方式依次拿流中的元素和在初始化值的基础上进行计算,计算结果再和后面的元素计算。
六.并行流
当流中有大量元素时,我们可以使用并行流去提高操作的效率。其实并行流就是把任务分配给多个线程去完成。如果我们自己用代码实现的话会非常复杂,并且要求对并发编程有足够的理解和认识。而如果我们使用stream的话,我们只需要修改一个方法的调用就可以使用并行流来帮我们实现,从而提高效率。
流对象.parallel()