2015-06-02 55 views
2

我有一個關於HashSet中的add方法如何工作的問題。我對Java比較陌生,所以請不要介意這太幼稚了。 我正在研究HashSet的源代碼,並發現HashSet中的'add'方法正在將值保存在HashMap中。將元素添加到HashSet中

public boolean More ...add(E e) { 
    return map.put(e, PRESENT)==null; 
} 

我想通了就是「E」是關鍵,add方法添加新的元素作爲重點,而不是作爲一種價值,因此HashSet的就沒有duplicates.Please糾正我,如果我我錯了。

+3

你是對的。我知道查看Java源代碼的興奮有時是無法控制的,但嚴重的是,現在的問題是什麼? – CKing

+1

你已經知道了......如果你想深入挖掘...請點擊鏈接... http://javahungry.blogspot.com/2013/08/how-sets-are-implemented-internally-in.html – CoderNeji

+1

這基本上是正確的。它對所有條目使用相同的值PRESENT。沒有人關心創建單獨的哈希集合實現,而是重用現有的'HashMap'代碼(儘管需要更多內存來存儲那些對PRESENT對象的引用)。 –

回答