Junior — Middle
Could you explain the purpose of the hashCode method and its role when using contracts in Java?
sobes.tech AI
Answer from AI
The hashCode() method in Java returns an integer value that represents the hash of the object. It is used in hash-based collections such as HashMap, HashSet.
The role of hashCode() in the equals() contract:
- If two objects are equal according to the
equals()method, then theirhashCode()must return the same value. - If
equals()returnsfalse, thenhashCode()can return different values, but it is not required.
This is important for the correct functioning of hash structures: first, the hash is computed to determine the bucket, and then equals() is called for exact comparison.
Example of overriding:
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
MyClass myClass = (MyClass) o;
return field.equals(myClass.field);
}
@Override
public int hashCode() {
return field.hashCode();
}
Violation of this contract can lead to incorrect collection behavior and hard-to-debug errors.