有一个称为flight的HashMap和一个名为planes的ArrayList。如果用户输入this.planes中存在的飞机的名称,则该方法旨在创建新的航班。唯一的问题是,使用这种方法无法以相同的飞机和不同的进场/离场创建两个航班。当您创建与上一个平面相同的新Flight对象时,它将替换上一个平面。我想知道如何避免这种情况的发生。

public void addFlight(String planeID, String departure, String arrival) {

    Flight newFlight = null;
    for(Plane p : this.planes) {
        if(p.getID().equals(planeID)) {
            newFlight = new Flight(p, departure, arrival);
        }
    }
    flights.put(planeID, newFlight);
}


由于输入的planeID字符串从分配给新Flight的this.planes中确定飞机,因此我制作了一个遍历飞机ArrayList的循环,以检查名称是否匹配。我很确定这就是使我无法制作多个具有相同“飞机”的“航班”的原因,但是我不知道我还能改变什么。我尝试添加这个附加的if语句,但是它没有达到我的预期。

else if (this.flights.keySet().contains(p.getID())) {
    newFlight = new Flight(p, departure, arrival); //In case it is a repeated Plane
}

最佳答案

你需要这个

HashMap<String,List<Flight>>


代替

HashMap<String,Flight>


这将帮助您在用Flight映射的列表中维护多个planeID实例。

09-05 20:33