HashSet 和TreeSet是Set的典型实现。HashSet 比TreeSet性能好,TreeSet需要额外通过红黑树算法维护集合 的顺序。除了需要维护集合的顺序外,其他的都优先用HashSet 。
LinkedHashSet 比HashSet 慢,但是因为有链表,所以遍历他就更快。
EnumSet是性能最好的,但是只能保存同一个枚举类的成员作为元素。
注意:该三个实现类都不是线程安全的。需要手动保证Set集合的同步
解决:Collections的工具类synchronizedSortedSet,包装下Set集合
例子:
SortedSet s =Collections.synchronizedSortedSet(new TreeSet());
Collections 工具类其他同步方法:
synchronizedCollection(Collection<T> c)
synchronizedList(List<T>list)
synchronizedMap(Map<K,V> m)
synchronizedSet(Set<T> s)
synchronizedSortedMap(SortedMap<K,V> m)
这个方法返回一个同步的(线程安全的)有序映射所指定的有序映射支持
原文:https://www.cnblogs.com/yizhizhangBlog/p/9264473.html