四Collectors

1Import

全部引入
根据需要引入

2Collectors.toList()

将Stream所有元素转化成list集合

3Collectors.toSet()

将Stream所有元素转化成set集合。

set不存在相同重复元素


4Collectors.toCollection()

使用toSet 和toList不能自定义Collection实现,toCollection可以指定

5Collectors.toMap()

将Stream元素转成Map实例,需要keyMapper和valueMapper

6Collectors.collectingAndThen()

将Stream所有元素收集后执行指定动作

转成list

7Collectors.joining()

根据指定方式链接元素

8Collectors.counting()

计量Stream的元素个数

9Collectors.summarizingDouble/Long/Int()

返回统计信息

10Collectors.averagingDouble/Long/Int()

平均信息

11Collectors.summingDouble/Long/Int()

求和信息

12Collectors.maxBy()/minBy()

返回最大或最小元素

13Collectors.groupingBy()

根据属性分组,将结果存储在Map中。

14Collectors.partitioningBy()

groupingBy相似,但是特殊在key是Boolean类型,value是Collecitons

15Collectors.teeing()

将最大和最小元素使用依次操作就可以实现

16自定义Collectors

(1)需要实现的接口

public interface Collector<T, A, R> {...}

T-可供收集的物体类型,

A-可变累加器对象的类型,

R-最终结果的类型。

(2)例子

(3)由于需要用于内部收集操作处理的可变集合,所以不能使用不变集为此,我们需要使用其他一些可变集合或任何其他类,这些类可以为我们临时对象。在这种情况下,我们将继续使用ImmutableSet.Builder现在我们需要实现5种方法:

(4)详解:

supplier()方法 返回一个Supplier实例 用来生成一个空的accumulator 实例

accumulator()方法 返回一个函数实例用来在一个实例中添加新的元素

combiner()方法返回一个函数用来合并两个实例

finisher()用来转换类型

characteristics()方法提供附加信息流

(5)实现类如下

(6)测试:

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容