创建
通过数组创建
Arrays.stream;
通过集合创建
//普通流
集合对象.stream();
//并行流
集合对象.parallelStream();
创建空的流
Stream.empty();
创建无限流
//创建无限流,通过limit提取指定大小
Stream.generate()
创建规律的无线流
Stream.iterate()
方法
collect(toList())&filter
collect(toList())的作用是通过一个Stream对象生成List对象,当流执行了collect方法才会触发之前的转换操作
filter用于过滤Stream中的元素,filter方法是一个高阶函数,接受一个函数接口作为参数,此高阶函数返回一个boolean值,返回true的元素会被保留下来
高阶函数:接收或者返回一个函数接口的函数成为高阶函数
函数接口:只包含一个函数的接口称为函数接口
map
map函数的作用是将流中的一个值转换成一个新值,即将一个List转换为另一个list,可以更改List中的值(转换流,将一种类型的流转换为另外一种流)
flatMap
floatMap:将多个Stream连接成一个Stream
max&min
求List的最大值或者最小值,需要指定对比依据
reduce
从一组值中生成一个新的值,reduce可以做为集合的累加或者减少
sorted
对流进行排序
findFirst
查找第一个
findAny
找到所有匹配的元素,对并行流十分有效,只要在任何一个片段中发现第一个匹配元素就会结束整个运算
anyMatch
是否含有匹配元素,如果含有匹配元素则返回true
Optional类型
通常聚合操作会返回一个Optional类型,Optional表示一个安全的指定结果类型,安全是指避免直接调用返回类型的null值而造成空指针异常,调用optional.ifPresent()可以判断返回值类型是否为空,或者直接调用ifPresent(Consumer<? super T> consumer)在结果不为空时进行消费操作,调用optional.get()
collect
收集结果
collect(toList()),collect(toSet()),collect(toMap(Student::getName,Student::getScore,(s,a)->s+a))
生成指定类型
collect(toCollection(HashSet::new));
统计
collect(Collectors.summarizingInt(Student::getScore));
分组和分片(分组和分片的意义,将collect的结果集展示为Map<key,val>的形式)
分组:collect(groupingBy(Student::getName));
//如果只有两类,使用partitioningBy会比groupingBy更有效率
分片:collect(partitioningBy(x->x.getScore()>50));
来源:CSDN
作者:记得别熬夜
链接:https://blog.csdn.net/qq_41636344/article/details/104070042