先创建Stream,可以用of也可以用list.stream()
中间操作符
中间操作符可以叠加,用多次。终止操作符只能用一次。
- map,把什么map成什么
遍历Stream,map成字符串长度:
Stream.of("apple","banana","orange","waltermaleon","grape")
.map(e->e.length()) //转成单词的长度 int
.forEach(e->System.out.println(e)); //输出
- flatmap,对流的每一项数据进行自定义的处理(比map更高级的处理),然后再转成流
- limit 限流
- distint 去重
- filter 过滤,在filter中设一个条件,将满足条件的流下
- peek 在终结操作符之前,提前消费Stream的元素。比如在终结操作符之前,将user的姓名改掉
- skip 跳过一些元素,比如设一个整数,跳过前几个值
- sorted排序,在sorted里面放入一个Comparator
- reduce,翻译过来为减少,根据例子理解:计算一个数组所有元素的乘积,也可以用最大最小值
终止操作符
- collect 收集操作,将所有数据收集起来,这个操作非常重要,官方的提供的Collectors 提供了非常多收集器,可以说Stream 的核心在于Collectors。
- count 统计操作,统计最终的数据个数。
- findFirst、findAny 查找操作,查找第一个、查找任何一个 返回的类型为Optional。
- noneMatch、allMatch、anyMatch 匹配操作,数据流中是否存在符合条件的元素 返回值为bool 值。
- min、max 最值操作,需要自定义比较器,返回数据流中最大最小的值。
- reduce 规约操作,将整个数据流的值规约为一个值,count、min、max底层就是使用reduce。
- forEach、forEachOrdered 遍历操作,这里就是对最终的数据进行消费了。
- toArray 数组操作,将数据流的元素转换成数组。
附:
Demo集合:https://zhuanlan.zhihu.com/p/105018072
Java8方法在Stream里面有,在Optional里面也有