[HashSet] élément non unique
Hello !
J'ai un problème avec la classe hashset : j'ai redéfini la methode equals pour une classe que j'utilise, et pourtant si j'insère deux objets différents ayant les mêmes attributs, le deuxième n'est pas rejeté c'est-à-dire que le hashSet ne voit pas qu'il est déjà contenu. Cet exemple :
Code:
1 2 3 4 5 6
| Set hashSet = new HashSet();
VirtualFile f1 = new VirtualFile("C:\\test.txt", false);
VirtualFile f2 = new VirtualFile("C:\\test.txt", false);
System.out.println("f1 égal f2 ? " + f1.equals(f2));
hashSet.add(f1);
System.out.println("f2 dans le hashSet ? " + hashSet.contains(f2)); |
donne la sortie suivante :
Code:
1 2
| f1 égal f2 ? true
f2 dans le hashSet ? false |
Comment cela se fait-il ? Le hashSet ne se base-t-il pas sur la méthode equals de l'objet ? Si jamais, j'ai essayé avec un TreeSet, et là pas de problème :roll:...