Ответ 1
Это будет правильный ответ: использование класса Sets из Guava. В любом случае ответ от @crhis был хорошим.
Sets.newSetFromMap(new ConcurrentHashMap<V, Boolean>());
Как и в названии, я хотел бы получить потокобезопасный HashSet с использованием коллекций Guava.
Можете ли вы мне помочь?
Спасибо!
Это будет правильный ответ: использование класса Sets из Guava. В любом случае ответ от @crhis был хорошим.
Sets.newSetFromMap(new ConcurrentHashMap<V, Boolean>());
Set<K> set = Collections.newSetFromMap(new ConcurrentHashMap<K, Boolean>());
Google Collections имел метод factory с именем Sets.newConcurrentHashSet() некоторое время.
Его реализация была похожа на предложение Криса:
public static <E> Set<E> newConcurrentHashSet() {
return newSetFromMap(new ConcurrentHashMap<E, Boolean>());
}
У них был метод newSetFromMap() внутри класса com.google.common.collect.Sets(написан Doug Lea при содействии членов JCP JSR-166). Этот метод был добавлен в java.util.Collections в java 1.6.
Он был отозван в Google Collections 1.0rc1, так как есть планы по улучшению поддержки параллельных наборов в Guava (подробнее здесь).
Этот пост расширяет использование метода newSetFromMap для создания параллельных множеств.