以HashMap为例:
HashMap使用Key对象的hashcode()和equals()方法去决定key-value对的索引。无论是往HashMap中存放键值对还是从HashMap中取出键值对都需要用到hashcode()和equals()方法。如果这些方法没有被正确地实现,在这种情况下,两个不同的key值可能会产生相同的hashCode()和equals()输出,HashMap将会认为它们是相同的,然后覆盖它们,而非把它们存储到不同的地方。同样的,所有不允许存储重复数据的集合类都是用hashCode()和equals()去查找重复的元素。所以正确的实现它们很重要。
hashCode()和equals()遵循的规则:
1、两个对象的equals()结果相同那么它们的hashCode()结果总为true。
2、两个对象的HashCode()结果相同,他们的equals()结果不一定相同。
(一个尚未工作,在code路上疯狂踩坑然后努力爬起的小学生。上述表述如有误,请批评指正。谢谢!)