首页 > 解决方案 > Java 从一个 ArrayList 中删除并移动到另一个

问题描述

我正在尝试将一个类从数组列表移动到另一个相同类型但与不同类相关联的类。我这样做的原因是车辆正在从一个类(仓库)移动到另一个类。我想复制它。但是,我发现这样做很难。

这是我的代码:

if (depotSelection.equals("Lpool")) {
    Vehicle v = depots.get(depotNo).getVehiclebyReg(vehicleSelection);
    depots.get(0).makeVehicle(v);
    depots.get(depotNo).removeByVehicleReg(vehicleSelection);
    exit = true;
    break;
}
if (depotSelection.equals("Leeds")) {
Vehicle v = depots.get(depotNo).getVehiclebyReg(vehicleSelection);
depots.get(1).makeVehicle(v);
depots.get(depotNo).removeByVehicleReg(vehicleSelection);
exit = true;
break;
}
if (depotSelection.equals("MChester")) {
    Vehicle v = depots.get(depotNo).getVehiclebyReg(vehicleSelection);
    depots.get(2).makeVehicle(v);
    depots.get(depotNo).removeByVehicleReg(vehicleSelection);
    exit = true;
    break;
}

这是我用来删除它的代码:

public void removeByVehicleReg(String regNo) {
    vehicles.removeIf(v -> v.getRegNo().equals(regNo));
}

这是我得到的当前异常:

Exception in thread "main" java.util.ConcurrentModificationException
    at java.base/java.util.ArrayList$Itr.checkForComodification(ArrayList.java:1042)
    at java.base/java.util.ArrayList$Itr.next(ArrayList.java:996)
    at DepotSystem.reAssignVehicles(DepotSystem.java:400)
    at DepotSystem.depotMenu(DepotSystem.java:166)
    at DepotSystem.logOn(DepotSystem.java:123)
    at DepotSystem.entryMenu(DepotSystem.java:89)
    at Entry.main(Entry.java:10)

标签: javaarraylist

解决方案


推荐阅读