Home > Java > javaTutorial > body text

How is the hash code of an object generated in Java?

PHPz
Release: 2024-04-11 18:45:01
Original
968 people have browsed it

The hash code of a Java object is generated by the following formula: h = (h

How is the hash code of an object generated in Java?

#How is the hash code of an object generated in Java?

Hash code is an int value stored inside a Java object and is used to quickly identify and find the object. It is generated by the following formula:

hashCode = (h << 5) - h + x
Copy after login

where:

  • h is the sum of the previous hash code left shifted by 5 bits and the original hash code The result (initial value is 0)
  • x is the hash code of the object attribute value or pointer

For basic types, the hash code is stored directly in the object , such as:

int i = 10;
System.out.println(i.hashCode()); // 输出:10
Copy after login

For reference types, the hash code is generated based on the hash code list of its object, where:

hashCode = (hashcode1 * 31) + (hashcode2 * 31) + ... + (hashcodeN * 31)
Copy after login

where 31 is a prime number, called the "magic number", which helps To reduce hash collisions.

Practical case

Consider the following Person class:

class Person {
    private String name;
    private int age;
    
    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }
    
    @Override
    public int hashCode() {
        int hash = 0;
        if (name != null) {
            hash += name.hashCode() * 31;
        }
        hash += age * 31;
        return hash;
    }
}
Copy after login

This class covers hashCode() Method to generate a custom hash code, calculated based on the name and age attribute hash codes.

Person p1 = new Person("John", 25);
Person p2 = new Person("John", 25);

System.out.println(p1.hashCode() == p2.hashCode()); // 输出:true
Copy after login

In the above case, although p1 and p2 are different objects, the hash codes are the same since they have the same properties.

The above is the detailed content of How is the hash code of an object generated in Java?. For more information, please follow other related articles on the PHP Chinese website!

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template