Collectors类的静态工厂方法(来自于JAVA8实战)

本文详细介绍了 Java 8 中 Stream API 的 Collectors 类提供的多种静态工厂方法,包括 toList, toSet, toCollection 等用于收集流中元素的方法,以及 counting, summingInt, averagingInt 等用于计算统计信息的方法。此外,还介绍了 maxBy, minBy, reducing 和 collectingAndThen 等高级收集器的使用方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Collectors类的静态工厂方法(来自于JAVA8实战)


工厂方法返回类型用于
toListList把流中所有项目收集到一个List
toSetSet把流中所有项目收集到一个Set,删除重复项
toCollectionCollection把流中所有项目收集到给定的供应源创建的集合
countingLong计算流中元素的个数
summingIntInteger对流中项目的一个整数属性求和
averagingIntDouble计算流中项目Integer 属性的平均值
summarizingIntIntSummaryStatistics收集关于流中项目Integer 属性的统计值,例如最大、最小、总和与平均值
joining`String连接对流中每个项目调用toString 方法所生成的字符串
maxByOptional一个包裹了流中按照给定比较器选出的最大元素的Optional,或如果流为空则为Optional.empty()
minByOptional一个包裹了流中按照给定比较器选出的最小元素的Optional,或如果流为空则为Optional.empty()
reducing归约操作产生的类型从一个作为累加器的初始值开始,利用BinaryOperator 与流中的元素逐个结合,从而将流归约为单个值
collectingAndThen转换函数返回的类型包裹另一个收集器,对其结果应用转换函数
groupingByMap K, List根据项目的一个属性的值对流中的项目作问组,并将属性值作为结果Map 的键
partitioningByMap Boolean,List根据对流中每个项目应用谓词的结果来对项进行分区

工厂方法 返回类型 用 于

toList List 把流中所有项目收集到一个List

使用示例:List dishes = menuStream.collect(toList());

toSet Set 把流中所有项目收集到一个Set,删除重复项

使用示例:Set dishes = menuStream.collect(toSet());

toCollection Collection 把流中所有项目收集到给定的供应源创建的集合

使用示例:Collection dishes = menuStream.collect(toCollection(),
ArrayList::new);

counting Long 计算流中元素的个数

使用示例:long howManyDishes = menuStream.collect(counting());

summingInt Integer 对流中项目的一个整数属性求和

使用示例:int totalCalories =
menuStream.collect(summingInt(Dish::getCalories));

averagingInt Double 计算流中项目Integer 属性的平均值

使用示例:double avgCalories =
menuStream.collect(averagingInt(Dish::getCalories));

summarizingInt IntSummaryStatistics收集关于流中项目Integer 属性的统计值,例如最大、最小、总和与平均值

使用示例:IntSummaryStatistics menuStatistics =
menuStream.collect(summarizingInt(Dish::getCalories));

joining` String 连接对流中每个项目调用toString 方法所生成的字符串

使用示例:String shortMenu =
menuStream.map(Dish::getName).collect(joining(“, “));

maxBy Optional一个包裹了流中按照给定比较器选出的最大元素的Optional,或如果流为空则为Optional.empty()

使用示例:Optional fattest =
menuStream.collect(maxBy(comparingInt(Dish::getCalories)));

minBy Optional一个包裹了流中按照给定比较器选出的最小元素的Optional,或如果流为空则为Optional.empty()

使用示例:Optional lightest =
menuStream.collect(minBy(comparingInt(Dish::getCalories)));

reducing 归约操作产生的类型从一个作为累加器的初始值开始,利用BinaryOperator 与流中的元素逐个结合,从而将流归约为单个值

使用示例:int totalCalories =
menuStream.collect(reducing(0, Dish::getCalories, Integer::sum));

collectingAndThen 转换函数返回的类型 包裹另一个收集器,对其结果应用转换函数

使用示例:int howManyDishes =
menuStream.collect(collectingAndThen(toList(), List::size));
groupingBy Map

根据项目的一个属性的值对流中的项目作问组,并将属性值作为结果Map 的键

使用示例:Map

根据对流中每个项目应用谓词的结果来对项目进行分区

使用示例:Map

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值