記一次對HashSet淺薄的理解
阿新 • • 發佈:2018-12-15
在開發過程中,本人一直習慣使用HashMap儲存相關資料,很少想到HashSet。此次遇到了HashMap中有重複元素,在雙重迴圈取資料的時候,出現數據大量冗餘。由此想到了HashSet是不能存在重複元素的。繼而,深入學習了一下HashSet,對HastSet做了一點淺薄的記錄。
話不多說,學習集合框架首選得看原始碼。點選原始碼進去,告訴我你看到了什麼。
尼瑪,這是什麼鬼。所有的構造方法都是new 一個HashMap????。坑爹呢。那它是怎麼保證元素不能重複的???
看看它的add方法。它的值是一個寫死的 private static final Object PRESENT
這麼說,hashSet的元素是儲存在hashMap的key中的咯,它的值的給定的一個new Object()。
事實還真是如此。
在HashMap中key是唯一的,但是他的value可以是重複的。
而HashSet中,由於它的元素的儲存在HashMao中的key上,所以它保證了HashSet元素不能重複。當有新值加入add時,底層的hashMap會判斷key是否存在,如果不存在,則插入新值,同時這個插入的細節會依照HashMap插入細節;如果存在就不插入
網上查看了一下其他大佬的部落格,結果發現跟我所理解的差不多。我這裡就略記到此。深入的理解請移步 大佬的部落格。