假设一个潜在的多线程环境。我想使用地图和(值)缓存。为什么我更喜欢
之一collection.immutable.Map.empty[ K, SoftReference[ V ]]
new com.google.common.collect.MapMaker.softValues.makeMap[ K, V ]
另一个?地图将存储在STM ref中,因此不可变是直截了当的。此外,K
最有可能是Long
,因此我可以使用collection.immutable.LongMap
。
在这里使用谷歌收藏有什么好处?表现和空间明智吗?
答案 0 :(得分:0)
IMO Google方法的主要优势是生成的API更清晰,即SoftReference
被插入并为您进行空检查,而不是您需要管理它们。但保证不变性和本机Scala API是另一列中的标记。
我倾向于尝试编写一个mixin(类似于我们在标准库中已经拥有的MultiMap
,不幸的是它是可变的。)