创建Stream的方式:
Collection的stream()方法(串行流)
Collection的parallelStream()方法(并行流)
Arrays中的静态方法stream()获取数组流
Stream类中的 of()静态方法
Stream 中间操作:
filter —— 接收Lambda ,从流中排除某些元素
limit —— 截断流,使其元素不超过给定数量
skip(n)—— 返回一个扔掉了前n个元素的流。若流中元素不足n个,则返回一个空,与limit(n)互补
distinct —— 通过流所生成元素的hashCode()和equals()去除重复元素
map——将元素转换成其他形式或者提取信息。接收一个函数作为参数,该函数会被应用到每个元素上,并将其映射成一个新的元素
sorted——有两种方法,一种是不传任何参数,叫自然排序,还有一种需要传Comparator 接口参数,叫做定制排序
Stream 终止操作:
allMatch —— 检查是否匹配所有元素
anyMatch —— 检查是否至少匹配所有元素
noneMatch —— 检查是否没有匹配所有元素
findFirst —— 返回第一个元素【findFirst 返回的是一个Optional的对像,他将我们的真实对象封装了一层,这是为了避免空指针。而且这个Optional对象为我们提供了一个orElse方法,作用是当我们得到的这个对象为空时,我们可以传入一个新的对象去替代它】
findAny —— 返回当前流中任意元素
count —— 返回流中元素总个数
max —— 返回流中最大值
min —— 返回流中最小值
collect——将流转换为其他形式。接收一个Collector接口的实现,将流中的元素收集到List,Set,Map等。
collect可用的Collector的收集器实现有:
Collectors.toList() 将流转换成List;
Collectors.toSet()将流转换为Set;
Collectors.toCollection()将流转换为其他类型的集合;
Collectors.counting() 元素个数;
Collectors.groupingBy()分组 ,返回一个map