1 概述
这是Java中经典的问题,在面试中也经常被问起.很多书提到要重载hashCode()和equals()两个方法才能实现自定义键在HashMap中的查找,但是为什么要这样以及如果不这样做会产生什么后果...,好像很少有文章讲到,所以来这一篇记录下.
2 案例分析
首先,如果我们直接用以下的Person类作为键,存入HashMap中,会发生发生什么呢?...了.同时,在Object默认的equals()中,也是根据对象的地址进行比较,自然一个Person(“003”)和另一个Person(“003”)是不相等的....)以根据字符串的内容来返回Hash Code值,所以相同内容的字符串具有相同的Hash Code....就是因为避免出现上述例子中的出现的情况,因为根据对Person类的hashCode()方法的重载实现,Person类会直接用id这个String类型成员的Hash Code值作为自己的Hash Code