The difference between hashcode and equals is: 1. If two objects equals returns true, then hashCode must also return the same int number; 2. If two objects hashCode returns the same int number, then equals does not necessarily Return true.
hashcode: an integer representation of the initial address of the object
Objects in Java are managed by the JVM, and the JVM will manage it when it deems appropriate Moving objects, for example, GC that occurs under certain GC algorithms that need to defragment memory. At this time, the address of the object will change, but the hashcode will not change.
hashCode is to improve the efficiency of searching in hash structure storage and has no effect in linear tables.
Generally, if an object of a class will be stored in a hash storage structure such as HashTable, HashSet, HashMap, etc., then it is best to rewrite hashCode after rewriting equals, otherwise it will cause data to be stored Non-uniqueness (two equals data are stored). If it is determined that it will not be stored in these hash structures, you do not need to rewrite the hashCode.
If two objects equals returns true, hashCode must also return the same int number.
If two objects equals returns false, hashCode does not necessarily return different int numbers, but generating different hashCode values for unequal objects can improve the performance of the hash table.
If the hashCode of two objects returns the same int number, equals does not necessarily return true.
If the hashCode of two objects returns different int numbers, equals must return false.
If the same object is already stored in the collection during execution, the relevant information that affects the hashCode value cannot be modified, otherwise it will cause memory leaks.
Generally speaking, when comparing sizes between objects, you need to override the equals method.
Recommended tutorial: "java tutorial"
The above is the detailed content of What is the difference between hashcode and equals?. For more information, please follow other related articles on the PHP Chinese website!