我有一个带有重写的equals()hashCode()方法的自定义类。我将该类的实例存储在TreeSet中。我不能弄清楚为什么tree.contains(someObject)返回true,而tree.first().equals(someObject)返回false的原因,如果tree只有一个元素。

最佳答案

实际上,您应该实现Comparable,但是您也应该覆盖equals。两者都是必需的。

此外,当compareTo返回true时,应确保equals方法始终返回0。如果equals返回false,则compareTo也应返回值= 0。

如果要改为使用HashMap,则必须实现hashCode。因此,实现它可能也是一个好主意。

编辑:

对于那些对Comparator感到疑惑的人:当您想不时使用不同种类的排序时,可以使用此接口。在这种情况下,您将创建一个充当分类器的附加类。然后,此类需要实现Comparator接口。因此,在这种情况下,您不希望您的类实现它。

07-25 22:35
查看更多