首页 > 解决方案 > 从 ArrayList java中删除某个对象

问题描述

我在 Java 上有一个 ArrayList 来存储来自工厂的几个订单。这些命令有几个属性,其中是idPedido。问题是,如果我声明订单 1、2 和 3,请通过名为bajaPedido(如下所示)的方法删除订单 2:

public void bajaPedido(){
     try{
              idPedido=teclado.nextInt();
              listaPedidos.remove(idPedido); 
           }catch(InputMismatchException e){
               teclado.next();
              System.out.print("Debe utilizar números, por favor, repita el proceso");
           }catch(IndexOutOfBoundsException e){
               teclado.next();
               System.out.println("No existe un pedido con ese ID");
            }
    }

那么第三个顺序将在数组的第二个位置,因为idPedido在这种情况下指的是数组的位置,而不是存储在对象内部的变量。

问题是,我如何编码它,如果我输入 id 它会搜索哪个对象包含这样的 id 并删除它,而不是删除 id 等于的位置?

标签: java

解决方案


Iterator如下图使用:

idPedido = teclado.nextInt();
for(Iterator<Order> itr = listaPedidos.iterator(); itr.hasNext();){
    Order order = itr.next();
    if(order.getId() == idPedido){
        itr.remove();
    }
}

如果id所有订单中的listaPedidos是唯一的,请使用break;afteritr.remove();以获得更好的性能(即,即使在删除所需订单后也可以防止循环运行)。


推荐阅读