使用 Java Streams 时,开发人员经常面临同时使用 groupingBy() 方法和归约方法的情况() 收集器来操纵他们的数据。但是,在某些情况下,使用 toMap() 方法有一种更有效的方法。
模式是什么?
正如 @Holger 在之前的文章中指出的讨论中,人们注意到,当将reducing收集器与groupingBy一起使用时,使用toMap收集器通常更合适。通过大量 Stackoverflow 讨论的经验和观察,这种模式是显而易见的。
为什么首选 toMap()
groupingBy 收集器需要第二个 Collector 作为参数,从而使其成为首选适合将可变归约应用于数据组。相比之下,具有合并功能的 toMap 收集器非常适合经典的归约。 toMap 中的 merge 函数与 Reduction 函数具有相似的目的和形状,尽管它没有这样标记。
实际上,执行 Reduction 的收集器返回一个可选值,这在使用时并不总是可取的分组依据。这就是 toMap 的用武之地,因为它可以更无缝地处理此类情况。
其他模式
虽然已识别出此特定模式,但可能还会有更多模式使用这些 API 时很明显。然而,将它们全部收集到一个答案中超出了 Stackoverflow 的范围。我们鼓励开发人员进一步探索这些 API 并分享他们的经验,以发现更多模式和最佳实践。
以上是在 Java 流中何时使用 toMap() 而不是 GroupingBy 和 Reducing?的详细内容。更多信息请关注PHP中文网其他相关文章!