我升级从谷歌集合0.9至1.0。这似乎是Sets.newConcurrentHashSet()不再可用。我用它在下面的结构:

public static <K, V> Multimap<K, V> newConcurrentMultimap()
{
    return Multimaps.newMultimap( new ConcurrentHashMap<K, Collection<V>>(), new Supplier>()
    {
        @Override
        public Collection<V> get()
        {
             return Sets.<V>newConcurrentHashSet();
         }
    } );
}

什么会是Sets.newConcurrentHashSet()?

的最佳替代

编辑: 这样做的原因结构是有多重映射是安全的读取和多线程编写。它是在大多读方案中使用(和将被读取很多)。

的问候,

维姆

有帮助吗?

解决方案

Sets.newConcurrentHashSet在1.0rc1被撤回(提交日志)。我不知道退出的理由,但你可以使用的 自己的实现:

Sets.newSetFromMap(new ConcurrentHashMap<V, Boolean>());

其他提示

尝试使用MapMaker,然后使用newSetFromMap()

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top