13. Set总结
Set
- 无重复元素;
- 重写了equals和hashCode方法;
TreeSet
- 基于TreeMap的红黑树结构实现;
- 非同步、fail-fast;
- 不允许使用NULL元素;
- 适用于排序、不包含重复元素场景;
HashSet
- 基于哈希表(HashMap)实现;
- 允许使用null元素;
- 非同步,fail-fast;
- 适用于快速查找、不包含重复元素场景;
LinkedHashSet
- 基于LinkedHashMap的Set接口的哈希表和链接列表实现;
- 非同步,fail-fast;
- 适用于快速查找、有序、不包含重复元素场景;
CopyOnWriteArraySet
- 基于CopyOnWriteArrayList的Set;
- 同步、fail-safe;
- 迭代器不支持可变remove操作;
- 适用于:set大小通常保持很小,只读操作远多于可变操作,需要在遍历期间防止线程间的冲突;
ConcurrentSkipListSet
- 基于ConcurrentSkipListMap的可缩放并发NavigableSet实现;
- 不允许使用null元素;
- 有序;
EnumSet
- 与枚举类型一起使用的专用Set实现;
- 不允许使用null元素;
- 非同步;