Skip to content

📘 Exercices sur hashCode() en Java

Exercice 1 : Classe simple et problĂšme

Créez une classe Personne avec un seul champ : - String nom

Implémentez uniquement la méthode equals() (sans hashCode()).

  1. CrĂ©ez deux objets diffĂ©rents mais avec le mĂȘme nom.
  2. VĂ©rifiez avec equals() → rĂ©sultat attendu : true.
  3. Ajoutez ces deux objets dans un HashSet → combien d'Ă©lĂ©ments obtenez-vous ? Pourquoi ?

Exercice 2 : Corriger avec hashCode()

Dans la classe Personne, redéfinissez correctement hashCode() à l'aide de :

@Override
public int hashCode() {
    return Objects.hash(nom);
}

👉 Refaites le test avec un HashSet. Que remarquez-vous maintenant ?


Exercice 3 : Plusieurs champs

Ajoutez Ă  la classe Personne les attributs : - String prenom - int age

ImplĂ©mentez equals() et hashCode() avec tous les champs.\ 👉 Testez avec des objets qui diffĂšrent seulement par l'Ăąge ou le prĂ©nom.


Exercice 4 : Mauvais hashCode

Créez une classe Livre avec : - String titre - String auteur

ImplĂ©mentez equals() normalement, mais pour hashCode() renvoyez toujours la mĂȘme valeur :

@Override
public int hashCode() {
    return 1;
}

👉 Ajoutez plusieurs Livre dans un et tester la mĂ©thode hashCode().


Exercice 5 : Bonus réflexion

Expliquez :

  1. Pourquoi deux objets diffĂ©rents peuvent avoir le mĂȘme hashCode ?
  2. Est-ce un bug ou une situation normale ?
  3. Pourquoi est-il dangereux de redéfinir equals() sans redéfinir hashCode() ?