Set和HashSet LinkedHashSet


Set 里面的去重復原理

set及子類的 方法add.()

其實里面調用了重寫之后的equals()和 hashcode()方法 :

重寫之后hashcode() 比較是這倆元素對象的哈希值是否是同一個哈希值如果不同講該元素放到數組中  如果相同返回true就進行equals比較

重寫之后equals() 比較這倆元素對象是否是同一個對象 是返回 true 而且不把該元素放到數組中

HashSet 的數據結構

哈希表 = 數組+鏈表/紅黑二叉樹(在鏈表元素大於8個之上就轉換為二叉樹)

比較的是里面的元素對象的hashcode 是否相同 相同就掛在同一個數組元素下面 

如果元素不同 但是哈希值相同這就是哈希值沖突 會進行equals判斷 是否為同一個元素 

使用 hashset集合來存儲自定義類型 該類必須重寫hashcode和equals方法再Set集合中才可以進行判斷去重復

 LinkedHashSet 集合包含了HashSet集合但是在這之上增加了 一條鏈表是來記錄順序的

所以LinkedHashSet是有序的 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM