决定每天上午8点整,分享一道 Java 面试题。厚积薄发,每天进步一点点!
【第 3 天】题目
两个对象的 hashCode()相同,则 equals()也一定为 true,对吗?
参考答案
不对,两个对象的 hashCode()相同,equals()不一定 true;同时反过来 equals() 为true,hashCode() 也不一定相同。理由如下:
Java对于关于 hashCode() 和 equals() 是方法是有一些常规协定:
【ps:当然,你未必要按照要求去做,但是如果你违背了上述原则就会发现在使用容器时,相同的对象可以出现在 Set/Map 集合中,同时增加新元素的效率会大大下降(对于使用哈希存储的系统,如果哈希码频繁的冲突将会造成存取性能急剧下降)】
留言区