HashSet的底層原理


( tip:底層是用hashMap 實現的)

HashSet底層使用了哈希表來支持的,特點:存儲快
往HashSet添加元素的時候,HashSet會先調用元素的HashCode方法得到元素的哈希值,然后通過元素的哈希值經過異或移位等運算,就可以算出該元素在哈希表中的存儲位置。

運行原理

如果算出的元素存儲的位置目前沒有任何元素存儲,name該元素可以直接存儲在該位置上;如果算出的元素的存儲位置上目前已經有了其他的元素,那么還會調用該元素的 equals方法 ,與該位置的元素進行比較一次,如果過equals方法返回的是true,那么該位置上的元素就會被視為重復元素,不允許被添加,如果false,則允許添加。

實現原理

hashset是基於hashmap實現的,默認構造函數是構建一個初始容量為16,負載因子為0.75的hashmap。封裝了一個hashmap 對象來存儲所有的集合元素,所有放在 hashset中的集合元素實際上由 hashmap的key來保存,而 hashset中的 hashmap的 value則存儲了一個PRESENT的靜態object對象

hashset和 treeset有什么區別

hashset是由一個hash表來實現的,因此它的元素是無序的,add,remove,contains方法的時間復雜度是 O(1)

treeset是由一個樹形結構來實現的,它里面的元素是有序的,因此,add,remove,contains方法的時間復雜度是 O(logn)


免責聲明!

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



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