Because Object
implements hashCode
, any Java class can be put into a hash structure. However, classes that define
equals(Object)
but not hashCode()
aren’t truly hash-able because instances that are equivalent according to the
equals
method can return different hashes.
public class Student { // no hashCode() method; not hash-able // ... public boolean equals(Object o) { // ... } } public class School { private Map<Student, Integer> studentBody = // okay so far new HashTable<Student, Integer>(); // Noncompliant // ...
public class Student { // has hashCode() method; hash-able // ... public boolean equals(Object o) { // ... } public int hashCode() { // ... } } public class School { private Map<Student, Integer> studentBody = new HashTable<Student, Integer>(); // ...