Java之Set的使用情境

來源:互聯網
上載者:User

標籤:個數   處理   良好的   鏈表實現   list   lis   規則   介紹   重點   

2.Set使用情境
  API介紹:
    java.util.Set介面和java.util.List介面一樣,同樣繼承自Collection介面,
  它與Collection介面中的方法基本一致,並沒有對Collection介面進行功能上的擴充,
  只是比Collection介面更加嚴格了。與List介面不同的是,Set介面中元素無序,
  並且都會以某種規則保證存入的元素不出現重複。Set集合有多個子類,
  這裡我們介紹其中的
  java.util.HashSet、
  java.util.LinkedHashSet這兩個集合。

特點:都會以某種規則保證存入的元素不出現重複,Set介面中元素無序
  ①元素不出現重複
  ②元素無序( 指 存取 無序)

雜湊表:只要往雜湊表中儲存自訂對象,那麼該自訂對象 所屬的類 必須重寫hashCode&equals方法
  ⑴HashSet集合
  底層是通過HashMap實現的 底層new HashMap對象 ,只用了 key 並沒有使用 value value指向統一地址 new Object()
API介紹:

    java.util.HashSet是Set介面的一個實作類別,它所儲存的元素是不可重複的,
  並且元素都是無序的(即存取順序不一致)。java.util.HashSet底層的實現其實
  是一個java.util.HashMap支援,HashSet是根據對象的雜湊值來確定元素在集合中的儲存位置,
  因此具有良好的存取和尋找效能。保證元素唯一性的方式依賴於:hashCode與equals方法。

特點:
  ①元素不重複
  ②存取順序不一致
  ③良好的存取和尋找效能
  ④元素唯一性的方式依賴於:hashCode與equals方法

HashSet集合儲存資料的結構(雜湊表):


  在JDK1.8之前,雜湊表底層採用數組+鏈表實現,即使用鏈表處理衝突,
同一hash值的鏈表都儲存在一個鏈表裡。但是當位於一個桶中的元素較多,
即hash值相等的元素較多時,通過key值依次尋找的效率較低。
而JDK1.8中,雜湊表儲存採用數組+鏈表+紅/黑樹狀結構實現,
當鏈表長度超過閾值(8)時,將鏈錶轉換為紅/黑樹狀結構,這樣大大減少了尋找時間。

  總而言之,JDK1.8引入紅/黑樹狀結構大程度最佳化了HashMap的效能,
那麼對於我們來講保證HashSet集合元素的唯一,其實就是根據對象的
hashCode和equals方法來決定的。如果我們往集合中存放自訂的對象,
那麼保證其唯一,就必須複寫hashCode和equals方法建立屬於當前對象的比較方式。

總結:1.8之前是通過 雜湊表底層採用數組+鏈表實現
    1.8中是通過 雜湊表儲存採用數組+鏈表+紅/黑樹狀結構實現(鏈表長度超過閾值(8)時,將鏈錶轉換為紅/黑樹狀結構,這樣大大減少了尋找時間)
  保證元素其唯一,必須重寫hashCode和equals方法建立屬於當前對象的比較方式

HashSet儲存自訂類型元素(重點):
  給HashSet中存放自訂類型元素時,需要重寫對象中的hashCode和equals方法,
建立自己的比較方式,才能保證HashSet集合中的對象唯一

⑵LinkedHashSet
  HashSet保證元素唯一,可是元素存放進去是沒有順序的,那麼我們要保證有序,怎麼辦呢
在HashSet下面有一個子類java.util.LinkedHashSet,它是 鏈表和雜湊表 組合的一個資料存放區結構。

Java之Set的使用情境

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.