首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Java中,具有相同属性值的不同对象是否可以具有相同的哈希码

在Java中,具有相同属性值的不同对象是否可以具有相同的哈希码
EN

Stack Overflow用户
提问于 2018-08-30 18:24:08
回答 3查看 286关注 0票数 1

我是Java新手,我有一个关于Java对象的哈希码的问题:

代码语言:javascript
复制
public class HelloWorld
{
  String name;
  int age;
}

具有相同属性值的不同对象是否具有相同的hashCode?

代码语言:javascript
复制
HelloWorld hello1 = new HelloWorld();
hello1.name = "hello";
hello1.age = 20;

HelloWorld hello2 = new HelloWorld();
hello2.name = "hello";
hello2.age = 20;

hello1hello2会有相同的hashCode吗?

而且,有没有可能具有不同属性值的对象具有相同的hashCode?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-08-30 20:15:35

相等的对象意味着相等的哈希码。

相等的哈希码并不意味着相等的对象。

不相等的哈希码意味着不相等的对象。

票数 0
EN

Stack Overflow用户

发布于 2018-08-30 18:30:08

您还没有覆盖hashCode()方法,因此hashCode本质上是随机的,因此对于两个不同的对象,可能是相同的,也可能是不同的,而不管它们的字段的值如何。不过,获得相同hashCode的概率将非常低。

票数 1
EN

Stack Overflow用户

发布于 2018-08-30 18:28:54

任何类都可以重写hashCode()来返回它想要的任何内容,所以是的。

如果您需要测试对象相等性,则使用equals(),对于对象标识,使用==

两个相等的对象应该返回相等的散列,但两个不相等的对象也可以返回相等的散列。大多数表示数据的类都需要覆盖这两个方法。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52094700

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档