-2
當涉及到HashSet的方法添加時,我正面臨一些問題。即使在閱讀它的源代碼here後,我也不太明白髮生了什麼。HashSet方法中的操作順序add()
該方法到底做了什麼?在調用hashCode和equals方面,它的操作順序是什麼?
當涉及到HashSet的方法添加時,我正面臨一些問題。即使在閱讀它的源代碼here後,我也不太明白髮生了什麼。HashSet方法中的操作順序add()
該方法到底做了什麼?在調用hashCode和equals方面,它的操作順序是什麼?
HashSet
只是一個HashMap
其中的值是一個Object
。
因此add
只是將元素添加到支持hashmap。向hashmap添加元素意味着使用hashCode來確定它應該放在哪裏。 equals
用於確定我們試圖添加的密鑰是否已經存在,然後值應該更新
*「其中值是布爾值」* - 錯誤 – Tom
因此,假設對象我們試圖添加到HashSet有一個特定的HashCode。但是,這個HashCode已經有了一個值「bucketed」。如果我們試圖添加的新對象不等於(用equals()方法),那麼先前的「bucketed」對象將替換爲我們要添加的對象? –
@PedroRibeiro研究幫助:[Java HashMap如何處理具有相同哈希代碼的不同對象?](// stackoverflow.com/q/6493605) – Tom