开发者社区> 问答> 正文

如何在父类中为子类自动完成所有的 hashcode 和 equals 实现?

如何在父类中为子类自动完成所有的 hashcode 和 equals 实现?

展开
收起
真的很搞笑 2021-10-31 01:08:50 948 0
1 条回答
写回答
取消 提交回答
  • hashCode与equals方法都是Java Object 对象中的方法也就是说Java的- -切对象都提供这两个方法。 这两个方法在Java中有着不- -般的联系; 在Java类操作中,也起着至关重要的计算依据,当 集合要添加新的元素时,先调用这个元素的hashCode方法,就一下子 能定位到它应该放置的 物理位置.上。 如果这个位置.上没有元素,它就可以直接存储在这个位置上,不用再进行任何比较了;如果这 个位置上已经有元素了,就调用它的equals方法与新元素进行比较,相同的话就不存了,不相 同就散列其它的地址。 所以这里存在一个冲突解决的问题,好处是:我们不用自己去写。缺点是:有时候父类中 equals和hashcode方法不满足我们的需求,需要重写。 hashCode是所有java对象的固有方法:如果不重载的话,返回的实际上是该对象,在jvm的 堆上的内存地址,而不同对象的内存地址肯定不同,所以这个hashCode也就肯定不同了,如 果重载了的话,由于采用的算法的问题,有可能导致两个不同对象的hashCode相同。 java中的hash函数返回的是int类型的:也就是说,最多允许存在2^32个分组,也是有限的, 所以出现相同的哈希码就不稀奇了

    2021-10-31 01:11:32
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
建立联系方法之一 立即下载
低代码开发师(初级)实战教程 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载