Java:聚合操作
我正在学习泛型、函数接口、lambda表达式和聚合操作。虽然我单独理解这些技术,但我很难将它们概念化,即它们如何协同工作 使用Java文档中标题为:接口收集器(T,A,R)的示例:Java:聚合操作,java,lambda,java-stream,functional-interface,Java,Lambda,Java Stream,Functional Interface,我正在学习泛型、函数接口、lambda表达式和聚合操作。虽然我单独理解这些技术,但我很难将它们概念化,即它们如何协同工作 使用Java文档中标题为:接口收集器(T,A,R)的示例: Collector(Widget,?,TreeSet(Widget)) into = Collector.of(TreeSet::new, TreeSet::add, (left,right)->{left.addAll(right); return left;}); 上述javadoc中的上述方法具有以下行
Collector(Widget,?,TreeSet(Widget)) into = Collector.of(TreeSet::new, TreeSet::add, (left,right)->{left.addAll(right); return left;});
上述javadoc中的上述方法具有以下行为参数:
Supplier(A) supplier,
BiConsumer(A,T) accumulator,
BiConsumer(A) combiner
上述示例中提供的供应商使用方法reference:TreeSet::new
用作结果提供者的TreeSet::new
与累加器的关系是什么?与组合器的关系是什么
这是怎么回事,我不明白这是怎么一个供应商
任何与这一广泛主题相关的文档链接都是非常有价值的。
感谢您的耐心。直接从以下网站引用:
供应商:
创建并返回新的可变结果容器的函数
TreeSet::new
只是对TreeSet构造函数的调用,它返回TreeSet的一个实例。从这个意义上说,它是树集的供应商
在此上下文中称为累加器的双消费者表示
将值折叠到可变结果容器中的函数
它将为类型A的对象提供类型T的对象。通常,您只需调用集合的一些add
方法,但在定义自定义收集器时,您也可以在此处进行一些预处理
最后,双消费者被描述为:
接受两个部分结果并将其合并的函数
当并行执行一个进程时,需要将部分结果(在此上下文中,仅包含元素子集的TreeSet
对象)组合到最终的TreeSet
结果中时,使用该方法。这通常是一个addAll
方法
因此,通过提供这些必要的成分,您可以构建自己的收集机制。我对该网站不熟悉,了解了其中的细节。看来你已经编辑了我的问题。是这样吗?如果是这样的话,谢谢你汉克斯·鲍里斯,你对每个函数的解释正是我需要阅读的。您帮助我对这些技术有了更深入的了解。