2010-09-02 10 views

Respuesta

6

Esta sería la respuesta correcta, utilizando la clase Conjuntos de Guava. De todos modos, la respuesta de @crhis fue buena.

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

Gracias, lo intentaré. – santiagobasulto

+1

Por cierto, todos sus puntos me pertenecen ya que respondí esta pregunta en la lista de correo de guayaba, 8 minutos antes de que se publicara aquí;) – whiskeysierra

+0

@Willi: Si pudiera asignárselos, lo haría, porque ya he acertado mi gorra de representante del día, así que no tengo absolutamente ningún representante para esta respuesta. :-P –

4

Google Colecciones tenían un método fábrica llamada Sets.newConcurrentHashSet() por un tiempo.

Su implementación fue similar a la sugerencia de Chris:

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

tenían una newSetFromMap() método dentro de la clase com.google.common.collect.Sets (escrito por Doug Lea con la ayuda de miembros de JCP JSR-166). Ese método se agregó a java.util.Collections en java 1.6.

Se retiró en Google Collections 1.0rc1, ya que hay planes para admitir mejor conjuntos concurrentes en Guava (más información here).

This post amplía el uso del método "newSetFromMap" para construir conjuntos concurrentes.