1. 程式人生 > >記一次對HashSet淺薄的理解

記一次對HashSet淺薄的理解

        在開發過程中,本人一直習慣使用HashMap儲存相關資料,很少想到HashSet。此次遇到了HashMap中有重複元素,在雙重迴圈取資料的時候,出現數據大量冗餘。由此想到了HashSet是不能存在重複元素的。繼而,深入學習了一下HashSet,對HastSet做了一點淺薄的記錄。

        話不多說,學習集合框架首選得看原始碼。點選原始碼進去,告訴我你看到了什麼。

       

        尼瑪,這是什麼鬼。所有的構造方法都是new 一個HashMap????。坑爹呢。那它是怎麼保證元素不能重複的???

        看看它的add方法。它的值是一個寫死的  private static final Object PRESENT

= new Object();

        

       這麼說,hashSet的元素是儲存在hashMap的key中的咯,它的值的給定的一個new Object()。

      事實還真是如此。

      在HashMap中key是唯一的,但是他的value可以是重複的。

      而HashSet中,由於它的元素的儲存在HashMao中的key上,所以它保證了HashSet元素不能重複。當有新值加入add時,底層的hashMap會判斷key是否存在,如果不存在,則插入新值,同時這個插入的細節會依照HashMap插入細節;如果存在就不插入

      網上查看了一下其他大佬的部落格,結果發現跟我所理解的差不多。我這裡就略記到此。深入的理解請移步

大佬的部落格