您可以考虑覆盖数据类的 .equals() 方法。
这样做可以让您执行以下操作来检查重复元素:
ArrayList<data> array_list = new ArrayList<data>();
// add some elements to array list
// check for duplicates
for(int i =0; i < array_list.size(); i++){
for(int j=0; j<array_list.size(); j++){
// compare for equality if it is not the same element
if(i != j){
if(array_list.get(i).equals(arrayList.get(j))){
// than we know there is a duplicate at index i,j
System.out.println("duplicate indexes: " + i + ", " + "j");
}
}
}
}
这是一个如何覆盖数据类的 .equals 方法的示例。
@Override
public boolean equals(Object obj) {
if (!(obj instanceof data)){ return false; }
if (obj == this) { return true; }
// compare strings to see if they are equal
data other_data = (data)obj;
boolean id_equal = other_data.id.equals(this.id);
boolean value_equal = other_data.value.equals(this.value);
boolean status_equal = other_data.status.equals(this.status);
return id_equal && value_equal && status_equal
}
编辑
如果您只想知道 id 是否相等,则无需覆盖数据类的 .equals()。
在这种情况下,您只需要使用第一个循环并比较 id 字符串而不是数据对象。
所以不是array_list.get(i).equals(arrayList.get(j),
你会这样做(假设你有数据私有成员的getter方法):
array_list.get(i).get(id).equals(array_list.get(j).get(id));
或者,您可以使用类似于第一个方法并覆盖 .equals() 以仅比较 id 字符串。