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

问题描述 投票:1回答:3

我是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?

java hashcode
3个回答
0
投票

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

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

不等哈希码意味着不等于对象。


1
投票

您没有覆盖hashCode()方法,因此hashCode基本上是随机的,因此对于两个不同的对象可能相同也可能不同,无论它们的字段值如何。获得相同hashCode的可能性非常低。


0
投票

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.