开发者社区> 问答> 正文

两个对象值相同(x.equals(y) == true),但却可有不同的hashCode,这句话对不

两个对象值相同(x.equals(y) == true),但却可有不同的hashCode,这句话对不对?

展开
收起
游客pklijor6gytpx 2019-12-02 14:11:12 1572 0
2 条回答
写回答
取消 提交回答
  • 这句话是错误的

    2020-04-05 23:28:59
    赞同 展开评论 打赏
  • 不对,如果两个对象x和y满足x.equals(y) == true,它们的哈希码(hash code)应当相同。Java对于eqauls方法和hashCode方法是这样规定的:(1)如果两个对象相同(equals方法返回true),那么它们的hashCode值一定要相同;(2)如果两个对象的hashCode相同,它们并不一定相同。当然,你未必要按照要求去做,但是如果你违背了上述原则就会发现在使用容器时,相同的对象可以出现在Set集合中,同时增加新元素的效率会大大下降

    2019-12-02 14:11:33
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载