虽然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)方法很好,对我来说也很好