本文介紹了當我添加重復項時,為什么.CONTAINS返回False?的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!
問題描述
我正在編寫一個簡單的方法來將一個對象添加到ArrayList中,如果它還沒有包含它的話。我使用的是.CONTAINS方法,但是由于某種原因,當我向ArrayList中添加對象的副本時,盡管我已經向ArrayList中添加了相同的對象,但.CONTAINS方法返回FALSE。
這是我的City
類:
class City {
private String name, country;
//getters, setters, constructor
}
當我有這樣的ArrayList
時:
List<City> destinations = new ArrayList<>();
添加了一個對象
destinations.add(new City("Edmonston", "CA"));
如果我檢查它是否包含類似這樣的重復對象,則返回FALSE
destinations.contains(new City("Edmonston", "CA"))
完整代碼如下:
main方法
,
輸出
城市類
旅行類
謝謝你的幫助!
推薦答案
見下文documentation of List#contains:
如果此列表包含指定元素,則返回TRUE。更多
形式上,當且僅當此列表包含至少一個
元素e使得對象等于(o,e)。
因此,您需要覆蓋class City
中的equals
方法。您可以按如下方式操作:
@Override
public boolean equals(Object obj) {
City other = (City) obj;
return Objects.equals(name, other.name) && Objects.equals(country, other.country);
}
這篇關于當我添加重復項時,為什么.CONTAINS返回False?的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,