从列表和比较器中删除java

时间:2014-03-12 17:38:49

标签: java arraylist

我必须从列表中删除元素 但仅通过比较它的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");
}

2 个答案:

答案 0 :(得分:4)

使用Iterator类迭代列表,然后使用删除方法删除该元素,否则您可能会面临一些问题并发修改例外&#39;。

ArrayList的contains方法也使用列表元素的equals方法,因此您需要在类Data中实现 equals 方法

答案 1 :(得分:2)

你需要覆盖equals方法......

public boolean equals(Object obj) {
    return id==obj.id;
}