java - 从列表和比较器 java 中删除

标签 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");
}

最佳答案

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

另外ArrayList的contains方法使用了列表元素的equals方法,所以需要在列表中实现equals方法类数据

关于java - 从列表和比较器 java 中删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22359561/

相关文章:

java - 我可以关闭底层输出流并让装饰器 BufferedOutputStream 未关闭吗

java - 如何升级这个嵌入式 tomcat?

javascript - 将两个数组转换为 JSON 对象

java - 为什么这个java迭代器循环也打印第一个元素?

java - 如何通过反射运行挂起方法?

java - 为什么 return 不遵守finally block 中变量的值?

java - 如何从命令行将象形文字作为参数传递给 main 方法

java - 如何在 bundle 中传递 list<>

java - 如何将整数数组转换为数组列表和链表?

javascript - 如何过滤该数组中大于或等于 90 的标记?