0

假设一个潜在的多线程环境。我想将地图与(值)缓存一起使用。为什么我更喜欢其中之一

collection.immutable.Map.empty[ K, SoftReference[ V ]]
new com.google.common.collect.MapMaker.softValues.makeMap[ K, V ]

超过另一个?该地图将存储在 STM 参考中,因此不可变将是直截了当的。此外,K很可能会是Long,所以我可以使用collection.immutable.LongMap.

在这里使用谷歌收藏有什么好处?性能和空间明智?

4

1 回答 1

0

IMO 谷歌方法的主要优点是生成的 API 更干净,即为SoftReference您插入和检查 s,而不是您需要管理它们。但是保证不变性和原生 Scala API 是另一列的标记。

我倾向于尝试编写一个 mixin(类似于MultiMap我们在标准库中已经拥有的,不幸的是它是可变的)。

于 2011-04-12T21:43:50.003 回答