Bonjour,
Je constate dans mon code une chose bizarre,
J'ai crée une classe avec les membres hashCode et equals,
Ensuite j'ai une classe Instruction sans equals ou hashCode
Puis je définis
Code : Sélectionner tout - Visualiser dans une fenêtre à part
Set<Pair<String, Pair<Set<Integer>, Instruction>>> varWrite=new HashSet<...>()
Ensuite 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
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();
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
|-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
D'où ma question, pourquoi ai-je des doublons dans mon set ?

Cordialement