Laravel  
laravel
文档
数据库
架构
入门
php技术
    
Laravelphp
laravel / php / java / vue / mysql / linux / python / javascript / html / css / c++ / c#

java hashcode

作者:優雅dē颓废   发布日期:2025-06-19   浏览:87

// 定义一个简单的类,重写 hashCode 方法
public class Person {
    private String name;
    private int age;

    // 构造函数
    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    // 重写 hashCode 方法
    @Override
    public int hashCode() {
        int result = name != null ? name.hashCode() : 0;
        result = 31 * result + age;
        return result;
    }

    // 重写 equals 方法(通常与 hashCode 一起重写)
    @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 && (name != null ? name.equals(person.name) : person.name == null);
    }

    // 测试 hashCode 方法
    public static void main(String[] args) {
        Person person1 = new Person("Alice", 25);
        Person person2 = new Person("Alice", 25);

        System.out.println("person1 的 hashCode: " + person1.hashCode());
        System.out.println("person2 的 hashCode: " + person2.hashCode());

        // 检查两个对象的 hashCode 是否相等
        System.out.println("person1 和 person2 的 hashCode 是否相等: " + (person1.hashCode() == person2.hashCode()));

        // 检查两个对象是否相等
        System.out.println("person1 和 person2 是否相等: " + person1.equals(person2));
    }
}

解释说明:

  1. hashCode() 方法:用于生成对象的哈希码。哈希码是一个整数,通常用于哈希表(如 HashMap)中快速查找对象。为了确保哈希表的正确性,当两个对象相等时,它们的哈希码也必须相等。

  2. equals() 方法:用于判断两个对象是否相等。根据 Java 的规定,如果两个对象通过 equals() 方法返回 true,那么它们的 hashCode() 方法也必须返回相同的值。

  3. 示例代码:创建了两个 Person 对象 person1person2,它们具有相同的属性值。通过打印它们的 hashCode 和调用 equals() 方法,验证了这两个对象的哈希码和相等性。

  4. 为什么重写 hashCode()equals():默认情况下,Object 类的 hashCode()equals() 方法是基于对象的内存地址的。如果我们不重写它们,即使两个对象的内容相同,它们的 hashCode() 也会不同,equals() 也会返回 false

上一篇:java 算法

下一篇:java boolean

大家都在看

java连接数据库的代码

ubuntu 卸载java

java sort用法

java collections.sort

java file类的方法

java 判断

java时间数据类型

java 时间加一天

java demo

java 截取

Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3

Laravel 中文站