4

我正在从 Google Collections 0.9 升级到 1.0。它似乎Sets.newConcurrentHashSet()不再可用。我在以下构造中使用它:

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

什么是 Sets.newConcurrentHashSet() 的最佳替代品?

编辑:这种构造的原因是拥有一个可以安全地从多个线程读取和写入的多映射。它用于大部分阅读的场景(并且会被大量阅读)。

4

3 回答 3

9

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

Sets.newSetFromMap(new ConcurrentHashMap<V, Boolean>());
于 2010-01-13T12:51:49.843 回答
1

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

于 2010-01-13T15:13:49.743 回答
-1

您可以使用

Collections.newSetFromMap(new ConcurrentHashMap<>());
于 2021-12-08T07:57:30.940 回答