我必须从列表中删除元素 但仅通过比较它的ID(课堂变量) 所以我在班上实现了可比性 但它没有删除
class data implements Comparable<data>{
int id;
int data;
data(int i,int d) {
id=i;
data=d;
}
@Override
public int compareTo(data o) {
if(id==o.id)
return 0;
return -1;
}
}
public class trial {
public static void main(String[] args) {
List<data> newone = new ArrayList<>();
data o1= new data(1,2);
data o2= new data(1,3);
System.out.println("Added");
newone.add(o1);
System.out.println(o1.id);
System.out.println(o2.id);
if(newone.contains(o2)) {
newone.remove(o2);
System.out.println("found");
}
if(newone.isEmpty())
System.out.println("Deleted");
System.out.println("finsihed");
}
答案 0 :(得分:4)
使用Iterator
类迭代列表,然后使用删除方法删除该元素,否则您可能会面临一些问题并发修改例外&#39;。
ArrayList的contains
方法也使用列表元素的equals
方法,因此您需要在类Data
中实现 equals 方法
答案 1 :(得分:2)
你需要覆盖equals方法......
public boolean equals(Object obj) {
return id==obj.id;
}