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什麼意思的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本文討論了使用Maven和Gradle進行Java項目管理,構建自動化和依賴性解決方案,以比較其方法和優化策略。

本文使用Maven和Gradle之類的工具討論了具有適當的版本控制和依賴關係管理的自定義Java庫(JAR文件)的創建和使用。

本文討論了使用咖啡因和Guava緩存在Java中實施多層緩存以提高應用程序性能。它涵蓋設置,集成和績效優勢,以及配置和驅逐政策管理最佳PRA

本文討論了使用JPA進行對象相關映射,並具有高級功能,例如緩存和懶惰加載。它涵蓋了設置,實體映射和優化性能的最佳實踐,同時突出潛在的陷阱。[159個字符]

Java的類上載涉及使用帶有引導,擴展程序和應用程序類負載器的分層系統加載,鏈接和初始化類。父代授權模型確保首先加載核心類別,從而影響自定義類LOA


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

SAP NetWeaver Server Adapter for Eclipse
將Eclipse與SAP NetWeaver應用伺服器整合。

Dreamweaver CS6
視覺化網頁開發工具

禪工作室 13.0.1
強大的PHP整合開發環境

EditPlus 中文破解版
體積小,語法高亮,不支援程式碼提示功能

MinGW - Minimalist GNU for Windows
這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。