一、Stream流介绍
Stream是一个流,其在java.util.Stream包的路径下,主要用于对集合数据进行查找过滤等操作,流是一种高效切易用的数据处理方式。
二、Stream流和Collection的区别
Collection只负责存储数据,不对数据做其它处理,其主要跟内存打交道。
Stream只负责计算数据,主要和CPU打交道。
三、Stream中间操作汇总
使用Stream流的步骤。
- 创建一个Stream,可以从集合、数组中获取流
- 使用Stream操作数据,对Stream流中的元素进行操作,是一个中间的操作链
- 终止Stream,终止操作,执行中间操作链,并产生结果
以下方法均为 stream().
后进行的操作。
所有的中间操作均为懒执行,直到实际需要处理结果时才会执行。
方法 | 作用 |
---|---|
filter() |
传入lambda表达式,用于从流中排除某些元素 |
limit(long maxSize) |
截断流,返回不超过maxSize数量的流 |
skip(long n) |
返回跳过前n个元素的流,如果流中的元素不足n个,就返回一个空流 |
distinct() |
去重操作,通过流所生成元素的hashCode()和equals()方法去除重复元素 |
map() |
接收lambda表达式,将元素转换成其它形式或提取元素的信息,可以接收函数作为参数,函数会被用到每一个元素上,将其映射成一个新的元素 |
sorted() |
自然排序,也可以传入Comparator自定义排序 |
allMatch() |
检查是否匹配所有元素 |
noneMatch() |
检查是否没有匹配所有元素 |
anyMatch() |
检查是否至少匹配一个元素 |
findFirst() |
返回第一个元素 |
findAny() |
返回当前流的任意一个元素 |
count() |
返回流元素的总个数 |
max(Comparator) |
返回流中的最大值,需要传入Comparator进行比较 |
min(Comparator) |
返回流中的最小值,需要传入Comparator进行比较 |
reduce() |
规约操作可以将流中的元素反复结合起来,得到一个值 |
collect() |
将流转换为其它形式,接收一个Collector接口是心啊,用于给Stream中汇总的方法 |
四、Stram的优势
stream就像一个工具,可以帮我们分析处理数据,使用非常的方便。