如何在父类中为子类自动完成所有的 hashcode 和 equals 实现?
hashCode与equals方法都是Java Object 对象中的方法也就是说Java的- -切对象都提供这两个方法。 这两个方法在Java中有着不- -般的联系; 在Java类操作中,也起着至关重要的计算依据,当 集合要添加新的元素时,先调用这个元素的hashCode方法,就一下子 能定位到它应该放置的 物理位置.上。 如果这个位置.上没有元素,它就可以直接存储在这个位置上,不用再进行任何比较了;如果这 个位置上已经有元素了,就调用它的equals方法与新元素进行比较,相同的话就不存了,不相 同就散列其它的地址。 所以这里存在一个冲突解决的问题,好处是:我们不用自己去写。缺点是:有时候父类中 equals和hashcode方法不满足我们的需求,需要重写。 hashCode是所有java对象的固有方法:如果不重载的话,返回的实际上是该对象,在jvm的 堆上的内存地址,而不同对象的内存地址肯定不同,所以这个hashCode也就肯定不同了,如 果重载了的话,由于采用的算法的问题,有可能导致两个不同对象的hashCode相同。 java中的hash函数返回的是int类型的:也就是说,最多允许存在2^32个分组,也是有限的, 所以出现相同的哈希码就不稀奇了
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。