Я работаю над проектом, который включает меня, используя HashSet
класса I, который я назову Test
. Я определил заявленная HashSet
так:Почему мой класс не работает должным образом в 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));
Я попытался с помощью
t.contains(new Test("asdf", 1));
но он возвращает false
. Однако, когда я использую HashSet<Character>
, он работает нормально. Я попытался переопределить предыдущую декларацию equals
, но это не сработало. Я попробовал оставить equals
один, но у меня все еще есть false
. Мне нужно знать, что я делаю неправильно?
также, я не редактировал хеш-функцию, я только изменил Test.equals (Object o). Это простой проект, и поскольку в java-документации указано, что он использует o.equals (это), я думал, что мне это не понадобится.
Можете ли вы опубликовать свой тестовый класс, в частности, методы equals и hashCode. – Joel
'HashSet.add' принимает только один аргумент, а не два. И ваш второй блок кода содержит синтаксическую ошибку. – Thomas
Кроме того, точка HashSet заключается в том, что ваш HashSet будет содержать экземпляры Test. Таким образом, это должно быть t.add (новый тест («asdf», 1)); –
Mike