首页主机资讯如何正确重写Java中的hashCode方法

如何正确重写Java中的hashCode方法

时间2024-09-23 18:48:03发布访客分类主机资讯浏览650
导读:在Java中,当你重写一个对象的hashCode( 方法时,需要确保满足以下几点: 在同一个对象的多个调用之间,hashCode( 必须始终一致。 如果两个对象根据equals( 方法是相等的,那么它们的hashCode( 必须产生相同的...

在Java中,当你重写一个对象的hashCode()方法时,需要确保满足以下几点:

  1. 在同一个对象的多个调用之间,hashCode()必须始终一致。
  2. 如果两个对象根据equals()方法是相等的,那么它们的hashCode()必须产生相同的值。
  3. 如果两个对象根据equals()方法是不相等的,那么它们的hashCode()方法不一定要产生不同的值,但产生不同的值是一个好的实践。
  4. hashCode()方法的值应该是根据对象的内容计算得出的。

下面是一个简单的示例,展示了如何为一个自定义类重写hashCode()方法:

public class Person {
    
    private String name;
    
    private int age;


    public Person(String name, int age) {
    
        this.name = name;
    
        this.age = age;

    }


    @Override
    public boolean equals(Object obj) {

        if (this == obj) {
    
            return true;

        }

        if (obj == null || getClass() != obj.getClass()) {
    
            return false;

        }
    
        Person person = (Person) obj;
    
        return age == person.age &
    &
     Objects.equals(name, person.name);

    }


    @Override
    public int hashCode() {
    
        return Objects.hash(name, age);

    }

}
    

在这个示例中,我们首先检查两个Person对象是否是同一个对象(this == obj),如果是,则返回true。接下来,我们检查传入的对象是否为null或者它们的类是否相同,如果满足这些条件,则返回false。然后,我们将传入的对象强制转换为Person类型,并比较它们的name和age属性是否相等。如果它们相等,则返回true,否则返回false。

在hashCode()方法中,我们使用Java的Objects.hash()方法来生成一个基于name和age属性的整数哈希值。这样,如果两个Person对象的name和age属性相等,那么它们的hashCode()方法将产生相同的值,从而满足上述hashCode()方法的要求。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: 如何正确重写Java中的hashCode方法
本文地址: https://pptw.com/jishu/700299.html
Java中hashCode方法的实现原理 Java中hashCode方法的作用是什么

游客 回复需填写必要信息