Подтвердить что ты не робот

Потокобезопасный набор HashSet с коллекциями Guava

Как и в названии, я хотел бы получить потокобезопасный HashSet с использованием коллекций Guava.

Можете ли вы мне помочь?

Спасибо!

4b9b3361

Ответ 1

Это будет правильный ответ: использование класса Sets из Guava. В любом случае ответ от @crhis был хорошим.

Sets.newSetFromMap(new ConcurrentHashMap<V, Boolean>());

Ответ 2

Set<K> set = Collections.newSetFromMap(new ConcurrentHashMap<K, Boolean>());

Ответ 3

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 для создания параллельных множеств.