兩個對象值相同(x.equals(y)==true),但卻可有不一樣的hash code,這句話對不對

equals方法對比的是元素的值,能夠hashcode不一樣, 可是若是咱們override了本身的equals方法同時也應該重載hashcode方法。假設有obj1和obj2相等, 這時候obj1做爲key放入map後,用obj2做爲key來獲取obj1存入的對象,多是得到爲null.由於Map會先用本身的hash方法處理obj2的hashcode,而後根據這個值再去查找。由於obj1和obj2的hashcode不一樣,則拿不到obj1存入的值。固然hashcode的重寫也要有必定的技巧,不然會影響map的存取效率。 ide

相關文章
相關標籤/搜索