2010-09-02 6 views

risposta

6

Questa sarebbe la risposta giusta, utilizzando la classe Sets di Guava. Ad ogni modo la risposta di @crhis era buona cosa.

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

Grazie, ci proverò. – santiagobasulto

+1

Btw, tutti i tuoi punti mi appartengono dato che ho risposto a questa domanda sulla mailing list guava, 8 minuti prima che fosse pubblicato qui;) – whiskeysierra

+0

@Willi: Se potessi assegnarli a te, lo farei, perché ho già colpito il mio cappellino per il giorno, quindi non ho assolutamente nessun rappresentante per questa risposta. :-P –

4

Google Collezioni avevano un metodo factory chiamato Sets.newConcurrentHashSet() per un po '.

La sua attuazione era simile al suggerimento di Chris:

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

avevano un newSetFromMap() metodo all'interno del com.google.common.collect.Sets classe (scritto da Doug Lea con l'assistenza di membri di JCP JSR-166). Questo metodo è stato aggiunto a java.util.Collections in java 1.6.

È stato ritirato in Google Collections 1.0rc1, dal momento che ci sono piani per supportare meglio i set concorrenti in Guava (ulteriori informazioni here).

This post espande l'utilizzo del metodo "newSetFromMap" per creare insiemi concomitanti.

Problemi correlati