java - 从 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 等于的位置?
解决方案
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();
以获得更好的性能(即,即使在删除所需订单后也可以防止循环运行)。
推荐阅读
- css - 如何使用伪类更改多选列表中选定项目的背景颜色
- php - 如何将 json 对象传递给 PHP 7.1.x 中具有类型参数的方法
- amazon-web-services - 健康检查失败 - Terraform - ECS 集群 - 动态端口映射健康检查在 2 个端口中的 1 个上失败?
- excel - 如果值为 "AA" ,则将 G 列的所有值存储在一个包含字母 "AA" 的变量中
- c# - 使用函数 ReadProcessMemory c# 读取地址时出错
- javascript - 如何从正文中删除特定元素?
- reactjs - 从 Redux reducer 中发出 REST API 请求是否可以?
- c - 在 VS 命令提示符下设置路径
- github - 为 Readthedocs 的单独 url 构建单独的主题
- numpy - Numpy 广播不等式运算符