虽然myArraylist包含java中指定的obj,但myArraylist.contains(obj)始终返回false?

虽然myArraylist包含java中指定的obj,但myArraylist.contains(obj)始终返回false?,java,arraylist,Java,Arraylist,我试图检查mylist是否包含给定对象,其中mylist是myCustomClass类型的ArrayList您很可能没有在myCustomClass上实现equals()和hashcode()。您需要根据合同正确地实现它们,请参阅以了解如何实现的详细信息。如果您将MyCustomClass的一个实例添加到列表中,然后检查它是否包含另一个MyCustomClass的实例,它将始终返回false,除非您在自定义类中重写equals方法。equals方法检查另一个对象在功能上是否与此对象相等 每次重写

我试图检查
mylist
是否包含给定对象,其中
mylist
myCustomClass
类型的
ArrayList
您很可能没有在
myCustomClass
上实现
equals()
hashcode()
。您需要根据合同正确地实现它们,请参阅以了解如何实现的详细信息。

如果您将
MyCustomClass
的一个实例添加到列表中,然后检查它是否包含另一个
MyCustomClass
的实例,它将始终返回false,除非您在自定义类中重写
equals
方法。equals方法检查另一个对象在功能上是否与此对象相等

每次重写equals方法时,请确保重写
hashCode
方法
hashCode
应该为两个相等的对象返回相同的值。此外,等式应该写得对称:
a.equals(b)
当且仅当
b.equals(a)


检查中的equals和hashCode。

检查这个问题我应该在mycustom类中覆盖equal()方法吗??它是列表接口的属性吗???困惑的无论如何,谢谢你reponse@chrish是的,您应该这样做,不是。它不是“列表接口的属性”。@chrish是的,在mycustom类上覆盖等于-最好使用“覆盖”注释对其进行注释(它是ATSIGNoverride,由于某种原因不能在那里使用at符号),因此它肯定被覆盖(如果你使用注释,编译器会抱怨,但它不是。)Java中没有“属性”之类的东西(无论如何,与C#不同。)谢谢@berry120、@Jesper i override equals(obj)方法,它对methanks@berry120、@Jesper i override equals(obj)方法很好,对我来说也很好