2010-09-02 26 views

Odpowiedz

6

To byłaby właściwa odpowiedź, Używanie klasy Ustaw z Guawy. W każdym razie odpowiedź od @crhis była dobra.

Sets.newSetFromMap(new ConcurrentHashMap<V, Boolean>()); 
23
Set<K> set = Collections.newSetFromMap(new ConcurrentHashMap<K, Boolean>()); 
+0

Dzięki, spróbuję. – santiagobasulto

+1

Przy okazji, wszystkie twoje punkty należą do mnie, ponieważ odpowiedziałem na to pytanie na liście mailingowej guava, 8 minut przed tym, jak został tutaj zamieszczony;) ​​ – whiskeysierra

+0

@Willi: Jeśli mógłbym ci je przypisać, zrobiłbym to, ponieważ już trafiłem mój czapeczka na cały dzień, więc nie dostaję absolutnie żadnego powtórzenia za tę odpowiedź. :-P –

4

Google Collections miał metody fabrycznej nazwie Sets.newConcurrentHashSet() na chwilę.

Jego realizacja była podobna do Chrisa sugestia:

public static <E> Set<E> newConcurrentHashSet() { 
    return newSetFromMap(new ConcurrentHashMap<E, Boolean>()); 
} 

Mieli newSetFromMap() metodę wewnątrz com.google.common.collect.Sets klasy (napisanej przez Douga Lea z pomocą członkowie JCP JSR-166). Ta metoda została dodana do java.util.Collections w java 1.6.

Został wycofany w kolekcjach Google 1.0rc1, ponieważ istnieją plany lepszego wsparcia zestawów współbieżnych w Guava (więcej informacji here).

This post rozszerza się o użycie metody "newSetFromMap" do konstruowania zestawów współbieżnych.

Powiązane problemy