为什么我的类在Java HashSet中无法正常工作?

ces*_*sar 0 java collections hashset

我正在研究一个涉及我使用HashSet我制作的课程的项目,我将其命名Test.我这样定义了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));
Run Code Online (Sandbox Code Playgroud)

我试过用

t.contains(new Test("asdf", 1));
Run Code Online (Sandbox Code Playgroud)

但它回来了false.但是,当我使用HashSet<Character>它似乎工作正常.我试图重写先前的equals声明,但它没有奏效.我试着equals独自离开,但我还是得到了false.我需要知道我做错了什么?

另外,我没有编辑哈希函数,我只更改了Test.equals(Object o).这是一个简单的项目,因为java文档声明它使用o.equals(this),我想我不会这样做.

CBF*_*ser 5

您可能还必须重载hashCode()方法.

  • 这应该是"意志",而不是"可能". (10认同)