Java Streams:揭示 toMap 的强大功能(分组和减少)
在 Java Streams 的世界中,诸如分组之类的转换通过一个键,然后减少每个组的值以产生单个结果,可以通过将 groupingBy 和减少收集器链接在一起来完成。然而,另一种经常被忽视的方法是使用 toMap 收集器,它在某些场景下可以提供显着的优势。
为什么 toMap 在某些情况下优于
这种模式源于与两位收藏家的丰富经验。各种 Stackoverflow 查询表明,虽然任一收集器都可以解决特定问题,但 toMap 可能是更合适的选择。根本原因源于 Reduction 和 Mutable Reduction 之间的区别。
通过以 groupingBy 收集器为代表的 Mutable Reduction,我们对组应用转换,累积每个组内的结果。另一方面,toMap 包含经典的归约,类似于合并函数的概念。
toMap 的主要优点
在实践中,执行归约的 toMap 收集器返回一个可选的,当与 groupingBy 结合使用时,这种特性通常是不受欢迎的。相反,toMap 可以无缝处理此类场景,无需额外的可选处理。
超越此模式
虽然此模式突出了 toMap 相对于 groupingBy 和ducing 的优势,这些 API 功能中还存在许多其他模式。虽然他们的全面阐述超出了 Stackoverflow 的范围,但他们通过经验的发现是无价的。
以上是在 Java Streams 中什么时候应该使用 toMap 而不是 groupingBy 和reduce?的详细内容。更多信息请关注PHP中文网其他相关文章!