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 :
donne la sortie suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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));
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
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 f1 égal f2 ? true f2 dans le hashSet ? false...
Partager