HashSet
- HashSet内部通过
HashMap
实现的,HashSet中的每个元素都被包装成键值对插入在HashMap中,全部元素共同使用一个static
的Object类型变量PRESENT
最为值,这样可以节约空间,因为我们只关注key。 - HashSet
非线程安全
,如果需要线程安全,可以使用CopyOnWriteArraySet、Collections.synchronizedSet(set)、ConcurrentSkipListSet、Collections.newSetFromMap(concurrentHashMap)。
LinkedHashSet
- 底层使用
LinkedHashMap
实现,维护插入顺序。
TreeSet
- 底层使用
TreeMap
实现,维护排序状态。