13、Java集合框架:Set总结

##Set

1、 无重复元素;
2、 重写了equals和hashCode方法;

##TreeSet

1、 基于TreeMap的红黑树结构实现;
2、 非同步、fail-fast;
3、 不允许使用NULL元素;
4、 适用于排序、不包含重复元素场景;

##HashSet

1、 基于哈希表(HashMap)实现;
2、 允许使用null元素;
3、 非同步,fail-fast;
4、 适用于快速查找、不包含重复元素场景;

##LinkedHashSet

1、 基于LinkedHashMap的Set接口的哈希表和链接列表实现;
2、 非同步,fail-fast;
3、 适用于快速查找、有序、不包含重复元素场景;

##CopyOnWriteArraySet

1、 基于CopyOnWriteArrayList的Set;
2、 同步、fail-safe;
3、 迭代器不支持可变remove操作;
4、 适用于:set大小通常保持很小,只读操作远多于可变操作,需要在遍历期间防止线程间的冲突;

##ConcurrentSkipListSet

1、 基于ConcurrentSkipListMap的可缩放并发NavigableSet实现;
2、 不允许使用null元素;
3、 有序;

##EnumSet

1、 与枚举类型一起使用的专用Set实现;
2、 不允许使用null元素;
3、 非同步;