哈希值

imtoken钱包2.0下载 2023-07-12 05:07:51

哈希值是JDK根据对象的地址或字符串或编号计算出的int类型的值

哈希值

同一个对象多次调用hashCode()方法返回的hash值是一样的

哈希值

默认情况下,不同对象的hash值是不同的。而重写hashCode()方法可以让不同的对象拥有相同的hash值

哈希值

package com.ding.hashtest;
import com.ding.mytreeset.Student;
public class Hashcodetest {
    public static void main(String[] args) {
        Student s1 = new Student("aaa",22);
        Student s2 = new Student("bbb",23);
        //在object类中是根据对象的地址值计算出来的哈希值
        System.out.println(s1.hashCode());//1163157884
        System.out.println(s1.hashCode());//1163157884
        
        System.out.println(s2.hashCode());//1956725890
    }
}

哈希值


package com.ding.hashtest;
import java.util.Objects;
public class Student {
    private String name;
    private int age;
    public Student() {
    }
    public Student(String name, int age) {
        this.name = name;
        this.age = age;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        Student student = (Student) o;
        return age == student.age &&
                Objects.equals(name, student.name);
    }
    @Override
    public int hashCode() {
        return Objects.hash(name, age);
    }
    @Override
    public String toString() {
        return "Student{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}

哈希值

世界不会因为你的疲倦而停止