兩個對象值相同 (x.equals(y) == true) ,但卻可有不同的 hash code ,這句話對不對?并簡要說明理由。
答 對 。
如 果 對 象 要 保 存 在 HashSet 或 HashMap 中 , 它 們 的 equals 相 等 , 那 么 , 它 們 的 hashcode 值 就 必 須 相 等 。如果不是要保存在 HashSet 或 HashMap ,則與 hashcode沒有什么關系了, 這時候 hashcode不等是可以的, 例如 arrayList 存儲的對 象 就 不 用 實 現 hashcode , 當 然 , 我 們 沒 有 理 由 不 實 現 , 通 常 都 會 去 實 現 的 。 對 。如 果 對 象 要 保 存 在 HashSet 或 HashMap 中 , 它 們 的 equals 相 等 , 那 么 , 它 們 的 hashcode 值 就 必 須 相 等 。如果不是要保存HashSet 或 HashMap ,則與 hashcode沒有什么關系了, 這時候 hashcode不等是可以的, 例如 arrayList 存儲的對象就不用實現 hashcode,當然,我們沒有理由不實現,通常都會去實現的 。
暫無解析