myArralist.contains(obj)总是返回false,虽然myArraylist在java中包含指定的obj?

时间:2011-08-28 09:36:58

标签: java arraylist

我正在尝试检查mylist是否包含给定对象,其中mylistArrayList类型myCustomClass

2 个答案:

答案 0 :(得分:3)

如果您向列表添加MyCustomClass的实例,然后检查它是否包含另一个MyCustomClass实例,它将始终返回false,除非您覆盖equals方法你的自定义类。 equals方法检查另一个对象是否在功能上等于该对象。

每次重写equals方法时,请务必覆盖hashCode方法。 hashCode应为两个相等的对象返回相同的值。此外,应该写出等于它的对称:a.equals(b)当且仅当b.equals(a)

检查javadoc of java.lang.Object中的equals和hashCode。

答案 1 :(得分:1)

您很可能尚未在equals()上实施hashcode()myCustomClass。您需要根据合同正确实施它们,有关详细信息,请参阅here