# Set

Set 中存储的元素是无序的、不可重复的。主要的实现有: HashSetLinkedHashSetTreeSetCopyOnWriteArraySet

Set 的无序指的并不是完全无序,而是指存储的数据在底层数组中并非按照数组索引的顺序添加,是根据数据的哈希值决定的。

Set 的不可重复性是依靠 HashMap 的 key 不可重复来做到的,且各种 Set 的实现都依托于 Map,所以 Set 不详细介绍,特性可以参照各自对应的 Map。

# Set与Map映射

HashSet -> HashMap

LinkedHashSet -> LinkedHashMap

TreeSet -> TreeMap

# CopyOnWriteArraySet

CopyOnWriteArraySet 与其他 Set 不同,内部是使用 CopyOnWriteArrayList 来实现的,通过在添加的时候判断元素是否存在来避免重复。

具体的介绍请参照 CopyOnWriteArrayList。