Bonjour,
Je constate dans mon code une chose bizarre,
J'ai crée une classeavec les membres hashCode et equals,
Code : Sélectionner tout - Visualiser dans une fenêtre à part Pair<U,V>
Ensuite j'ai une classe Instruction sans equals ou hashCode
Puis je définisEnsuite j'insert des élément dedans, et comme j'ai une boucle infinie je regarde le set avec le code suivant (en bref j'imprine les hashs et je compare les éléments 2 à 2)
Code : Sélectionner tout - Visualiser dans une fenêtre à part Set<Pair<String, Pair<Set<Integer>, Instruction>>> varWrite=new HashSet<...>()
Si j'ai bien compris mon Set utilise equals, ne contient pas de doublons et donc ici je devrais voir false partout, seulement voilà non seulement les hashs sont pour la plupart égaux mais aussi les .equals renvoient true.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 for(Pair<String, Pair<Set<Integer>, Instruction>> entry:varWrite ) System.out.print("|"+entry.hashCode()); System.out.println(); Pair<String, Pair<Set<Integer>, Instruction>> preventry=null; for(Pair<String, Pair<Set<Integer>, Instruction>> entry:varWrite ) { System.out.print("|"+entry.equals(preventry)); preventry=entry; } System.out.println();
D'où ma question, pourquoi ai-je des doublons dans mon set ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 |-495702225|-495702225|-495702225|-495702225|-495702225|-495702225|-495702225|-495702225|-495702225|-495702225|-495702225|-495702225|-495702225|-495702225|-495702225|-495702225|-495702225|-495702225|-495702225|-495702225|-495702225|-495702225|...495702225|1086338479|1086338479|1086338479|1086338479|1086338479|1086338479|1086338479|1086338479|1086338479|1086338479|1086338479|...|1086338479 |false|true|true|true|true|true|true|true|true|true|true|...|true|true
Cordialement
Partager