java高级特性:stream流
stream是java8引入的新特性,用于对集合(Collection)对象进行各种非常便利、强大的复杂查询、过滤和映射操作。
stream的好处:
- 可读性高;
- 因为不需要特别指定操作顺序,stream可以对计算进行优化;
stream与集合之间的区别:
- stream不存储元素;
- stream的操作不影响集合对象;
- stream的操作是惰性的;
stream的工作流程:
- 通过集合对象创建stream;
- 指定中间操作;
- 指定终止操作,产生结果;
stream支持的流类型:
stream:
parallelStream:
stream支持的中间操作:
filter:匹配条件,产生中间流;
map:转换元素,产生中间流;
flatMap:展平元素,消除层级结构,产生颗粒度更细的中间流;
limit:指定数量为n,保留前n个元素,产生中间流;
skip:指定数量为n,跳过前n个元素,产生中间流;
concat:连接两个流,产生中间流;
distinct:匹配比较算法进行去重,产生中间流;
sorted:匹配比较算法进行排序,产生中间流;
peek:每获取一个元素时,就执行指定的操作,产生中间流;
stream支持的终止操作:
count:返回流中的元素数量;
max:匹配比较算法,返回流中的元素最大值;
min:匹配比较算法,返回流中的元素最小值;
findFirst:配合filter使用,返回流中的第一个元素;
findAny:配合filter使用,返回流中的任意一个元素;
anyMatch:流中存在任意一个元素匹配断言条件时,返回ture或false;
allMatch:流中全部元素匹配断言条件时,返回ture或false;
noneMatch:流中全部元素不匹配断言条件时,返回true或false;
iterator:返回流的迭代器
forEach:遍历流中元素,执行指定操作,不保证顺序;
forEachOrdered:遍历流中元素,执行指定操作,保证顺序;
toArray:指定元素类型构造器,返回指定元素类型数组,默认为元素类型为Object;
collect:指定Collector实例,收集流元素到Collector实例中;
summarizing:返回SummaryStatistics,同时获取总和、数量、平均值、最大值和最小值;
Collector的收集器种类:
toList:返回List收集器;
toMap:返回Map收集器;
toConcurrentMap:返回concurrentMap收集器,并行条件下效率更高;
toSet:返回Set收集器;
toCollection:指定元素类型构造器,返回指定元素类型的Collection收集器;
joining:收集并连接字符串元素;
groupingBy:指定分类算法,将具有相同特征的元素进行分类聚集,返回Map<K,List<T>>收集器;
partitioningBy:指定分类算法,限制key为true或false,将相同特征的元素进行分类聚集,返回Map<Boolean,List<T>>收集器;
groupingByConcurrent:指定分类算法,将具有相同特征的元素进行分类聚集,返回Map<K,List<T>>收集器,并行条件下效率更高;
groupingBy的下游收集器:
toList:返回List收集器;
toSet:返回Set收集器;
counting:收集元素个数;
summing:收集数值元素并计算总和;
maxBy:收集元素中的最大值;
minBy:收集元素中的最小值;
mapping:结果收集器;

浙公网安备 33010602011771号