我们首先建个类key
写个main方法测试
输出
我们此时可以看到输出为null
我们重写hashcode方法再次测试
输出
此时可以看到输出依然为null 为什么呢?
原因:
我们覆写了hashcode方法,hash值是相等了,但是由于没有覆写equals方法,调用的是Object里面的equals方法
比较的是对象的地址值
那么我们再去覆写equals方法试试
输出
成功用key1拿到key中的值
总结:hashcode方法计算hash表中的索引,equals方法解决了当两个对象hash值相等时比较两个值是否相等
如果大家在HashMap中的“键”部分存放自定义的对象,一定要在这个对象里用自己的hashcode和equals方法去覆盖Object里的同名方法