將一個物件多次放入set不呼叫equals方法

特製蛋炒飯發表於2020-11-10

重寫object的 hashcode和equals 方法,但是將同一個物件多次放入set 中,並沒有呼叫equals 方法,而只是呼叫了hashcode 方法。 參考原始碼時發現相同的物件會略過equals方法。

以下為部分原始碼

 

if (p.hash == hash && ((k = p.key) == key || (key != null && key.equals(k))

其中 (k = p.key) == key  判斷為true,從而略過後面的equals方法。

相關文章