java strean_[java]Stream API——collect

一、R collect(Supplier supplier, BiConsumer accumulator, BiConsumer combiner)

supplier:一个能创造目标类型实例的方法。

accumulator:一个将当元素添加到目标中的方法。

combiner:一个将中间状态的多个结果整合到一起的方法(并发的时候会用到)

List result = stream.collect(() -> new ArrayList<>(), (list, item) -> list.add(item), (one, two) -> one.addAll(two));

二、R collect(Collector collector)

Collector其实是上面supplier、accumulator、combiner的聚合体。那么上面代码就变成:

List list= Stream.of(1, 2, 3, 4).filter(p -> p > 2).collect(Collectors.toList());

三、collector

Collector是Stream的可变减少操作接口,Collectors(类收集器)提供了许多常见的可变减少操作的实现。

四、创建Collector

转换成其他集合:toList、toSet、toCollection、toMap

List collectList = Stream.of(1, 2, 3, 4)

.collect(Collectors.toList());

System.out.println("collectList: " +collectList);//打印结果//collectList: [1, 2, 3, 4]

转成值:

使用collect可以将Stream转换成值。maxBy和minBy允许用户按照某个特定的顺序生成一个值。

averagingDouble:求平均值,Stream的元素类型为double

averagingInt:求平均值,Stream的元素类型为int

averagingLong:求平均值,Stream的元素类型为long

counting:Stream的元素个数

maxBy:在指定条件下的,Stream的最大元素

minBy:在指定条件下的,Stream的最小元素

reducing: reduce操作

summarizingDouble:统计Stream的数据(double)状态,其中包括count,min,max,sum和平均。

summarizingInt:统计Stream的数据(int)状态,其中包括count,min,max,sum和平均。

summarizingLong:统计Stream的数据(long)状态,其中包括count,min,max,sum和平均。

summingDouble:求和,Stream的元素类型为double

summingInt:求和,Stream的元素类型为int

summingLong:求和,Stream的元素类型为long

Optional collectMaxBy = Stream.of(1, 2, 3, 4)

.collect(Collectors.maxBy(Comparator.comparingInt(o->o)));

System.out.println("collectMaxBy:" +collectMaxBy.get());//打印结果//collectMaxBy:4

分割数据块:Collectors.partitioningBy

Map> collectParti = Stream.of(1, 2, 3, 4)

.collect(Collectors.partitioningBy(it-> it % 2 == 0));

System.out.println("collectParti : " +collectParti);//打印结果//collectParti : {false=[1, 3], true=[2, 4]}

数据分组:Collectors.groupingBy

Map> collectGroup= Stream.of(1, 2, 3, 4)

.collect(Collectors.groupingBy(it-> it > 3));

System.out.println("collectGroup : " +collectGroup);//打印结果//collectGroup : {false=[1, 2, 3], true=[4]}

字符串:Collectors.joining

String strJoin = Stream.of("1", "2", "3", "4")

.collect(Collectors.joining(",", "[", "]"));

System.out.println("strJoin: " +strJoin);//打印结果//strJoin: [1,2,3,4]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值