2017-10-08 195 views
-2

當涉及到HashSet的方法添加時,我正面臨一些問題。即使在閱讀它的源代碼here後,我也不太明白髮生了什麼。HashSet方法中的操作順序add()

該方法到底做了什麼?在調用hashCode和equals方面,它的操作順序是什麼?

回答

1

HashSet只是一個HashMap其中的值是一個Object
因此add只是將元素添加到支持hashmap。向hashmap添加元素意味着使用hashCode來確定它應該放在哪裏。 equals用於確定我們試圖添加的密鑰是否已經存在,然後值應該更新

+0

*「其中值是布爾值」* - 錯誤 – Tom

+0

因此,假設對象我們試圖添加到HashSet有一個特定的HashCode。但是,這個HashCode已經有了一個值「bucketed」。如果我們試圖添加的新對象不等於(用equals()方法),那麼先前的「bucketed」對象將替換爲我們要添加的對象? –

+0

@PedroRibeiro研究幫助:[Java HashMap如何處理具有相同哈希代碼的不同對象?](// stackoverflow.com/q/6493605) – Tom