java基礎-Set


Set


3.1概述
一個不包含重複元素的 collection。無序且唯一。
HashSet、LinkedHashSet、TreeSet
3.2 HashSet
此類實現 Set 接口,由哈希表(實際上是一個 HashMap 實例)支持。它不保證 set 的迭代順序;特別是它不保證該順序恆久不變。此類允許使用 null 元素。
注意,此實現不是同步的。如果多個線程同時訪問一個哈希 set,而其中至少一個線程修改了該 set,那麼它必須 保持外部同步。
HashSet底層數據結構是哈希表(HashMap),哈希表依賴於哈希值存儲,添加功能底層依賴兩個方法:int hashCode(),boolean equals(Object obj)。
3.3LinkedHashSet
具有可預知迭代順序的 Set 接口的哈希表和鏈接列表實現。此實現與 HashSet 的不同之外在於,後者維護着一個運行於所有條目的雙重鏈接列表。此鏈接列表定義了迭代順序,即按照將元素插入到 set 中的順序(插入順序)進行迭代。注意,插入順序不 受在 set 中重新插入的 元素的影響。
哈希表保證元素的唯一性,鏈表保證元素有序,也就是存入順序和取出順序相同。
3.4 TreeSet
基於 TreeMap 的 NavigableSet 實現。使用元素的自然順序對元素進行排序,或者根據創建 set 時提供的 Comparator 進行排序,具體取決於使用的構造方法。
注意,此實現不是同步的。如果多個線程同時訪問一個 TreeSet,而其中至少一個線程修改了該 set,那麼它必須 外部同步。
有兩種排序方式:A-自然排序,也是默認排序(實現Comparable),B-比較器排序。取決於構造方法。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章