淺談Java中的Set集合

Java中的集合Collection是集合的頂層父接口,Set爲其的子接口之一,而它也是我們經常食用到的集合。
下面就來談談Set集合。

Set集合概述



Set集合中的元素特點是:元素不允許重複,即元素唯一。

Set集合的成員方法


HashSet集合


HashSet是Set的一個實現子類,即此類實現Set接口,它由哈希表(實際上是一個 HashMap 實例)支持。它不保證 set 的迭代順序;特別是它不保證該順序恆久不變,可以理解爲元素的存取順序不一致。HashSet是線程不安全的,此類允許使用 null 元素。

當我們向HashSet中存儲元素的時候,HashSet 會調用該對象的hashCode() 方法來得到該對象的 hashCode 值,然後根據 hashCode 值決定該對象在 HashSet 中的存儲位置。

HashSet 集合判斷兩個元素相等的標準:
兩個對象通過 hashCode() 方法比較相等,並且兩個對象的 equals() 方法返回值也相等。

所以,HashSet中的元素的唯一性是通過元素重寫hashCode()和equals()方法來保證的,如果不重寫則無法保證元素的唯一性。

我們使用HashSet存儲Java提供好的引用類型的對象時,可以不用重寫hashcode()方法和equals()方法,因爲該類 已經重寫了hashcode()方法和equals()方法。
而使用HashSet存儲自定義對象的時候,需要先在該類中重寫hashcode()方法和equals()方法,否則無法保證HashSet中元素的唯一性。

構造方法

成員方法


LinkedHashSet集合


具有可預知迭代順序的 Set 接口的哈希表和鏈接列表實現(鏈表保證有序,哈希表保證元素唯一)。
此實現與 HashSet 的不同之外在於,後者維護着一個運行於所有條目的雙重鏈接列表。此鏈接列表定義了迭代順序,即按照將元素插入到 set 中的順序(插入順序)進行迭代,即元素的存取順序一致。注意,插入順序不受在 set 中重新插入的 元素的影響。

構造方法

成員方法

TreeSet集合



該類是基於 TreeMap 的 NavigableSet 實現。使用元素的自然順序對元素進行排序,或者根據創建 set 時提供的 Comparator 進行排序,具體取決於使用的構造方法。

TreeMap中元素不僅唯一,還可以對元素進行排序。排序有兩種方式:

  • 自然順序排序。使用TreeSet集合進行元素的自然排序,那麼對元素有要求,要求該元素必須實現Comparable接口,否則無法進行自然排序。
  • 按照比較器的順序進行排序。

元素的唯一性則是由compareTo方法的返回值來確定。如果返回0,表示兩個元素相等,則不重複存儲。

構造方法

成員方法



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