开发者社区 问答 正文

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

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

展开
收起
游客pklijor6gytpx 2019-12-02 14:11:12 1581 分享
分享
版权
举报
2 条回答
写回答
取消 提交回答
  • 这句话是错误的

    2020-04-05 23:28:59 举报
    赞同 评论

    评论

    全部评论 (0)

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

    2019-12-02 14:11:33 举报
    赞同 评论

    评论

    全部评论 (0)

    登录后可评论
问答地址:
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等