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