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

时间:2018-08-30 10:24:08

标签: java hashcode

我是Java新手,我对Java对象的哈希码有疑问:

public class HelloWorld
{
  String name;
  int age;
}

属性值相同的不同对象会具有相同的hashCode吗?

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

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

hello1hello2是否具有相同的hashCode?

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

3 个答案:

答案 0 :(得分:1)

您尚未覆盖hashCode()方法,因此hashCode本质上是随机的,因此对于两个不同的对象,无论它们的字段值如何,它都可以相同或可以不相同。但是,获得相同的hashCode的可能性非常低。

答案 1 :(得分:0)

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

如果您需要测试对象是否相等,则使用equals(),对于对象身份使用==

两个相等的对象应该返回相等的哈希值,但是两个不相等的对象也可以返回相等的哈希值。大多数表示数据的类都需要重写这两种方法。

答案 2 :(得分:0)

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

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

不相等的哈希码表示不相等的对象。