简单说明为什么重写equals()时必须重写hashcode()方法

1,当我们用重写了equals()方法但是没有重写hashcode()的自定义对象作为hash表的key进行存储数据时,会因为hashcode()计算出的hash值不同(没有重写的hashcode()方法是根据内存地址进行计算hash值的)将两个相同的key(因为重写了equals()方法,所以对象的属性值相等既可以认为对象相同)存储在hash表内不同下标的位置上,也意味着新建出来的另一个相同对象作为key去取数据时,会取不到之前存进去的数据

2,根据hashcode()的规则,即两个对象equals()为true时,hashcode()也一定为true,所以需要同时重写这两个方法,否则会破坏这个规则

你可能感兴趣的:(学习笔记)