Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java:聚合操作_Java_Lambda_Java Stream_Functional Interface - Fatal编程技术网

Java:聚合操作

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中的上述方法具有以下行

我正在学习泛型、函数接口、lambda表达式和聚合操作。虽然我单独理解这些技术,但我很难将它们概念化,即它们如何协同工作

使用Java文档中标题为:接口收集器(T,A,R)的示例:

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
方法


因此,通过提供这些必要的成分,您可以构建自己的收集机制。

我对该网站不熟悉,了解了其中的细节。看来你已经编辑了我的问题。是这样吗?如果是这样的话,谢谢你汉克斯·鲍里斯,你对每个函数的解释正是我需要阅读的。您帮助我对这些技术有了更深入的了解。