Bonsoir,
J'ai ce bout de code dans la méthode main:
Sachant que j'ai redéfinie les méthodes hashcode() et equals() pour remédier au problème de redondance des données, et ça marche sauf que lorsque j'affiche les données de mon HashMap, je remarque que j'ai {KEY: Andrea Pirlo - VALUE: Espagne} !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 Joueur ch1 = new Joueur(10, "Cristiano", "Ronaldo"); Joueur ch2 = new Joueur(20, "Leo", "Messi"); Joueur ch3 = new Joueur(30, "Andrea", "Pirlo"); Joueur ch4 = new Joueur(30, "Andrea", "Pirlo"); //Redondance explicite! HashMap<Joueur,String> myHashMap= new HashMap<Joueur, String>(); myHashMap.put(ch1, "Portugal"); myHashMap.put(ch2, "Argentine"); myHashMap.put(ch3, "Italie"); myHashMap.put(ch4, "Espagne"); System.out.println(myHasMap);
Je constate, alors, que le premier enregistrement {KEY: Andrea Pirlo - VALUE: Italie} a été écrasé !!! Comment est-ce possible alors que (D'après ce que j'ai compris) le ch3(= Andrea Pirlo - Italie) a été inséré au premier dans le HashMap puis lors que on a voulu inséré le ch4 (= Andrea Pirlo - Espagne), nous avons passé par les 2 tests de hashCode() puis equals() pour vérifier qu'il s'agit de la même personne (avec int num est le critère de comparaison dans equals); à ce moment là, le ch4 ne devrait plus être inséré! nn?
Merci pour la clarification en avance!
Partager