代码之家  ›  专栏  ›  技术社区  ›  ratzip

属性值相同的不同对象在Java中是否可以有相同的hashcode

  •  1
  • ratzip  · 技术社区  · 7 年前

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

    public class HelloWorld
    {
      String name;
      int age;
    }
    

    属性值相同的不同对象是否具有相同的哈希代码?

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

    hello1 hello2 有相同的哈希码吗?

    还有,属性值不同的对象是否可能有相同的哈希码?

    3 回复  |  直到 7 年前
        1
  •  0
  •   Pallav Kabra    7 年前

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

    非相等hashcode表示非相等对象。

        2
  •  1
  •   assylias    7 年前

    您尚未覆盖 hashCode()

        3
  •  0
  •   OrangeDog    7 年前

    任何类都可以重写 hashCode() 想要什么就给什么,所以是的。

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

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