如何在java8项目中自定义collector
本篇文章给大家分享的是有关如何在java 8项目中自定义collector,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。
创新互联专注于邵武网站建设服务及定制,我们拥有丰富的企业做网站经验。 热诚为您提供邵武营销型网站建设,邵武网站制作、邵武网页设计、邵武网站官网定制、小程序开发服务,打造邵武网络公司原创品牌,更为您提供邵武网站排名全网营销落地服务。
需求:
将 一个容器List
假定有这样一个Bean
public class SubjectOberser{ private String subjectKey; private AbstractObserver abstractObserver; ...geter seter 方法... }
我们需要按照 subjectKey 进行分组,分组过后的内容 应该为这样一个容器Map
map 中的key,为SubjectOberser 属性的subjectKey,值为List
实现过程
首先来看看collector 的接口定义
public interface Collector{ Supplier supplier(); BiConsumer accumulator(); Function finisher(); BinaryOperator combiner(); Set characteristics(); }
类型 A ,是accumulator 返回的类型,即是累加器的返回类型
这里的逻辑就是if else 逻辑判断就是,这个key ,在map 中是否存在,如果不存在,那么我们需要给他new一个list 的实例,不然我的的数据没有地方存储
characteristics 该方法返回一个 Characteristics 的集合,它有如下值可选
UNORDERED—— 归约结果不受流中项目的遍历和累积顺序的影响。
CONCURRENT—— accumulator函数可以从多个线程同时调用,且该收集器可以并行执行。如果收集器没有标为UNORDERED,那 它仅在用于用于无序数据源时才可以并行归约。
IDENTITY_ FINISH—— 这表明完成器方法返回的函数是一个不改变的函数,这种情况下,累加器对象将会直接用作合并过程 的最终结果。
直接在使用的地方直接new MyCollector
就可以了
以上就是如何在java 8项目中自定义collector,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注创新互联行业资讯频道。
分享题目:如何在java8项目中自定义collector
文章路径:http://dcwzsj.com/article/geddeg.html