HashSet 和TreeSet是Set的典型實現(xiàn)。HashSet 比TreeSet性能好,TreeSet需要額外通過紅黑樹算法維護集合 的順序。除了需要維護集合的順序外,其他的都優(yōu)先用HashSet 。

LinkedHashSet 比HashSet 慢,但是因為有鏈表,所以遍歷他就更快。

EnumSet是性能最好的,但是只能保存同一個枚舉類的成員作為元素。

注意:該三個實現(xiàn)類都不是線程安全的。需要手動保證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) 
      這個方法返回一個同步的(線程安全的)集由指定set支持。
    • synchronizedSortedMap(SortedMap<K,V> m) 
      這個方法返回一個同步的(線程安全的)有序映射所指定的有序映射支持