Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What is the replacement for Sets.newConcurrentHashSet()?

Tags:

java

guava

I am upgrading from Google Collections 0.9 to 1.0. It seems Sets.newConcurrentHashSet() is no longer available. I was using it in the following construct:

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();
         }
    } );
}

What would be the best replacement for Sets.newConcurrentHashSet() ?

Edit: The reason for this construct is to have a multimap that is safe to read and write from multiple threads. It is used in a mostly-read scenario (and will be read a lot).

like image 940
Wim Deblauwe Avatar asked Jan 23 '23 18:01

Wim Deblauwe


1 Answers

Sets.newConcurrentHashSet was withdrawn in 1.0rc1 (commit log). I don't know the reason for the withdrawal, but you could use the implementation yourself:

Sets.newSetFromMap(new ConcurrentHashMap<V, Boolean>());
like image 190
Ben Lings Avatar answered Jan 25 '23 07:01

Ben Lings