E dopo che hai letto la documentazione che ti ha indicato LeleFT, prova a pensare perché la seguente semplice classe viola il contratto alla grande.
hashCode() viene usato principalmente nelle collezioni basate internamente su una struttura dati hash-table. Nel framework standard, principalmente nelle collezioni: HashMap, HashSet, LinkedHashMap e LinkedHashSet.codice:class Persona { private final String nome; public Persona(String nome) { this.nome = nome; } // ... getter ... altro .... public boolean equals(Object o) { if (o instanceof Persona) { Persona altraPersona = (Persona) o; return nome.equals(altraPersona.nome); } else { return false; } } }