java高级特性:stream流

stream是java8引入的新特性,用于对集合(Collection)对象进行各种非常便利、强大的复杂查询、过滤和映射操作。

stream的好处:

  • 可读性高;
  • 因为不需要特别指定操作顺序,stream可以对计算进行优化;

 

stream与集合之间的区别:

  • stream不存储元素;
  • stream的操作不影响集合对象;
  • stream的操作是惰性的;

 

stream的工作流程:

  1. 通过集合对象创建stream;
  2. 指定中间操作;
  3. 指定终止操作,产生结果;

 

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:结果收集器;

 

posted @ 2025-04-09 19:17  Ohana+  阅读(40)  评论(0)    收藏  举报