Je travaille sur un projet qui m'implique en utilisant un HashSet
d'une classe que j'ai faite, que je nommerai Test
. Je défini les dit HashSet
comme ceci:Pourquoi ma classe ne fonctionne pas correctement dans un Java HashSet?
HashSet<Test> t = new HashSet<Test>();
t.add(new Test("asdf", 1));
t.add(new Test("hello", 2));
t.add(new Test("hello", 3));
J'ai essayé d'utiliser
t.contains(new Test("asdf", 1));
mais il retourne false
. Cependant, quand j'utilise un HashSet<Character>
il semble fonctionner correctement. J'ai essayé de remplacer la précédente déclaration equals
, mais cela n'a pas fonctionné. J'ai essayé de laisser equals
seul, mais j'ai toujours false
. J'ai besoin de savoir ce que je fais mal?
également, je n'ai pas édité la fonction de hachage, j'ai seulement changé Test.equals (Object o). C'est un projet simple et puisque la documentation de Java indique qu'il utilise o.equals (ceci), je pensais que je n'aurais pas à le faire.
Pouvez-vous publier la classe Your Test, notamment les méthodes equals et hashCode. – Joel
'HashSet.add' prend seulement un argument, pas deux. Et votre deuxième bloc de code contient une erreur de syntaxe. – Thomas
En outre, le point de HashSet est que votre HashSet contiendra des instances de test. Il devrait donc être t.add (nouveau test ("asdf", 1)); –
Mike