从列表和比较器java中删除

从列表和比较器java中删除,java,arraylist,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;

我必须从列表中删除元素 但只需比较它的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");
}
类数据实现可比较{
int-id;
int数据;
数据(整数i,整数d){
id=i;
数据=d;
}
@凌驾
公共整数比较(数据o){
if(id==o.id)
返回0;
返回-1;
}
}
公开庭审{
公共静态void main(字符串[]args){
List newone=newarraylist();
数据o1=新数据(1,2);
数据o2=新数据(1,3);
系统输出打印项次(“添加”);
添加(o1);
System.out.println(o1.id);
系统输出打印项次(o2.id);
if(新一代含(o2)){
去除(o2);
System.out.println(“找到”);
}
if(newone.isEmpty())
系统输出打印项次(“删除”);
System.out.println(“finsihed”);
}

使用
迭代器
类迭代列表,然后使用删除方法删除元素,否则您可能会遇到一些问题“并发修改异常”


另外
包含数组列表的
方法使用列表元素的
equals
方法,因此您需要在类
数据中实现equals方法

使用
迭代器
类迭代列表,然后使用删除方法删除元素,否则您可能会遇到问题一些问题是“并发修改异常”


另外
包含数组列表的
方法使用列表元素的
equals
方法,因此您需要在类
数据中实现equals方法,您需要覆盖equals方法

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

您需要重写equals方法

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

谢谢大家@Override public boolean equals(Object obj){if(obj instanceof data){data input=(data)obj;if(id==input.id)return true;}return false;}谢谢大家@Override public boolean equals(Object obj){if(obj instanceof data){data input=(data)obj;if(id==input.id)返回true;}返回false;}