HashSet basiert auf HashMap.
Wenn wir uns die HashSet<E>
Implementierung ansehen , wird alles unter verwaltet HashMap<E,Object>
.
<E>
wird als Schlüssel von verwendet HashMap
.
Und wir wissen, dass HashMap
das nicht threadsicher ist. Deshalb haben wir ConcurrentHashMap
in Java.
Aufgrund dessen bin ich verwirrt, warum wir kein ConcurrentHashSet haben, das auf dem basieren sollte ConcurrentHashMap
.
Fehlt mir noch etwas? Ich muss Set
in einer Multithread-Umgebung verwenden.
Wenn ich meine eigenen erstellen möchte, ConcurrentHashSet
kann ich dies erreichen, indem ich einfach das HashMap
to ersetze ConcurrentHashMap
und den Rest unverändert lasse?
ConcurrentSkipListSet
baut darauf auf ConcurrentSkipListMap
, was ConcurrentNavigableMap
und implementiert ConcurrentMap
.