为什么当添加重复项时,.contains返回false?

问题描述 投票:0回答:2

我正在编写一个简单的方法来将对象添加到ArrayList中,如果该对象尚未包含该对象。我正在使用.contains方法,但是由于某种原因,当我将对象的副本添加到ArrayList时,即使我已经将相同的对象添加到ArrayList中,.contains方法也会返回false。这是代码:

主要方法“主要方法”

输出“输出”

城市等级“

旅行类“旅行类别”

感谢您的帮助!

java arraylist contains
2个回答
2
投票

您需要在equals中覆盖class City方法。您可以按如下操作:

@Override
public boolean equals(Object obj) {
    City other = (City) obj;
    return Objects.equals(name, other.name) && Objects.equals(country, other.country);
}

0
投票

为了使contains()正常工作,您必须重写类中的equals()hashCode()方法。如果您不这样做,则相等性的基础是所引用的对象是相同的。

例如:

City c1 = new City("London", "UK") ;
City c2 = new City("London", "UK") ;
System.out.println(c1.equals(c2)) ;    // prints false
c2 = c1 ;
System.out.println(c1.equals(c2)) ;    // prints true

编辑:要覆盖equals()方法,请参见Arvind Kumar Avinash的答案。

© www.soinside.com 2019 - 2024. All rights reserved.