我之前曾问过一个有关增强代码here的问题。 @Holger给了我正确的答复,他说:



好像是花样!他建议我做的事很完美。

这是众所周知的模式吗?为什么toMap比(在某些情况下)结合groupingByreducing更好?

最佳答案

通过使用两个收集器的经验,这种模式变得显而易见。您会在Stackoverflow上找到一些问题和解答,可以使用任一收集器解决问题,但是其中一个似乎更适合特定任务。

这是ReductionMutable Reduction之间差异的变体。在第一种情况下,我们在Stream上使用reduce,在第二种情况下,我们使用collect。很自然,当我们想将可变约简应用于组时,使用第二个groupingBy作为参数的Collector收集器是正确的工具。

并不是很明显,当我们要执行经典的Reduction时,采用合并功能的toMap收集器是正确的工具,因为该合并功能具有与Reduction功能相同的形状和目的,即使未如此调用也是如此。

在实践中,我们注意到执行还原操作的收集器会返回Optional,这通常在与groupingBy一起使用时是不希望的,这就是toMap在这些情况下工作更平稳的原因。

使用这些API时肯定会出现更多模式,但是将它们收集在一个答案中并不是Stackoverflow的范围。

10-06 08:58