HashSet основан на HashMap.
Если мы посмотрим на реализацию HashSet<E>
, все будет управляться в HashMap<E,Object>
.
<E>
используется как ключ HashMap
.
И мы знаем, что HashMap
не является потокобезопасным. Вот почему мы имеем ConcurrentHashMap
в Java.
Исходя из этого, я смущен тем, что почему у нас нет ConcurrentHashSet, который должен основываться на ConcurrentHashMap
?
Есть ли что-то еще, что мне не хватает? Мне нужно использовать Set
в многопоточной среде.
Кроме того, если я хочу создать свой собственный ConcurrentHashSet
, могу ли я его достичь, просто заменив HashMap
на ConcurrentHashMap
и оставив все как есть?