Bonjour,
Je constate dans mon code une chose bizarre,
J'ai crée une classeavec les membres hashCode et equals,Code: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: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:
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:
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