![0bb79b4686473c4d8972d302931bc903.png](https://i-blog.csdnimg.cn/blog_migrate/887bd34e67246256cca0667e5aaa212d.jpeg)
我们前面的五篇文章基本都是在说将一个集合转成一个流,然后对流进行操作,其实这种操作是最多的,但有时候我们也是需要从流中收集起一些元素,并以集合的方式返回,我们把这种反向操作称为收集。流API也给我们提供了相应的方法。
如何在流中使用收集功能?
我们先看一看流API给我们提供的方法:
public interface Stream extends BaseStream> {
//...忽略那些不重要的东西
R collect(Supplier supplier,
BiConsumer accumulator,
BiConsumer combiner);
R collect(Collector super T, A, R> collector);
}
流API中给我们提供了两种,我给大家分析一下
R collect(Collector super T, A, R> collector);
其中R指定结果的类型,T指定了调用流的元素类型。内部积累的类型由A指定。collectorFunc是一个收集器,指定收集过程如何执行,collect()方法是一个终端方法。虽然我们基本上很少会用到自定义的collectorFunc,但是了为扩展大家的知识面,我们还是简单地聊一聊C