在google的MapMaker上收集.immutable.Map [K,SoftReference [V]]?

时间:2011-04-12 17:00:01

标签: caching scala collections guava soft-references

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

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

另一个?地图将存储在STM ref中,因此不可变是直截了当的。此外,K最有可能是Long,因此我可以使用collection.immutable.LongMap

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

1 个答案:

答案 0 :(得分:0)

IMO Google方法的主要优势是生成的API更清晰,即SoftReference被插入并为您进行空检查,而不是您需要管理它们。但保证不变性和本机Scala API是另一列中的标记。

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