当前位置: 首页 > 知识库问答 >
问题:

java-修复创建新对象的“add”方法中的bug

匡安宜
2023-03-14
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字符串确定了分配给新航班的飞机,因此我在planes数组列表中运行了一个循环,以检查名称是否匹配。我很确定这是什么使我不能做多个“航班”有相同的“飞机”,但我不知道我还能改变什么。我尝试添加这个附加的if语句,但它并没有像我想的那样起作用。

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

共有1个答案

车思淼
2023-03-14

为飞机创建HashMap并为航班创建ArrayList

您的设计将得到更多的简化,您将得到预期的行为。

添加代码将成为

public void addFlight(String planeID, String departure, String arrival) {
    flights.add(planes.get(planeID), departure, arrival);
}
  • 您正在使用平面ID作为散列映射的键。所以无论哪一个是唯一的w.r.t。键,应该放在hashmap中。在本例中为平面。
  • 对于存储航班,有两种选择
    1. 聚合:hashmap 按照章鱼建议
    2. 关联:plane列表为flight类的成员。

两种选择都很容易使用,但在第一选择中,飞行类中的飞机参考是多余的。所以我会选择第二个选择。

你应该选一个最适合你的。

 类似资料:
  • 我可以使用Powermock中的,但我想知道Spock有没有办法做到这一点。

  • 本文向大家介绍Java创建对象的几种方法,包括了Java创建对象的几种方法的使用技巧和注意事项,需要的朋友参考一下 有时候,也可能碰到这样面试题,如: Java创建对象有哪几种方法? 除了new之外,java创建对象还有哪几种方式? 本文结合例子,给出几种Java创建对象的方法,Here we go~~~~ 使用new创建 这是最常用的一种。如: Book book = new Book(); 示

  • 我很确定我以前做过这件事,所以我不知道为什么它现在会导致错误。这是我得到的错误: 它指向我定义新对象的位置,所以在静态上下文中不允许在方法调用中这样做吗?我需要定义一个变量并传入吗?因为那样会花更多的时间,而且会更加混乱。。。。 对于适当的上下文: 数组的类型为ArrayList Point是我定义的类。构造函数调用正确 p是Point的一个实例。它有两个字段:d0和d1(维度0和维度1,以减少与

  • 我编写了一个类,它读取整个文件并返回内容。

  • 好的,这是我的代码的一个紧凑版本 IDE(Eclipse)在emparray.add行上给出了以下错误 无法对非静态emparray进行静态引用 EmployeeClass无法解析为变量 令牌obj语法错误,请删除此令牌。 null

  • 主要内容:显式创建对象,隐含创建对象对象是对类的实例化。对象具有状态和行为,变量用来表明对象的状态,方法表明对象所具有的行为。 Java 对象的生命周期包括创建、使用和清除,本文详细介绍对象的创建,在 Java 语言中创建对象分显式创建与隐含创建两种情况。 显式创建对象 对象的显式创建方式有 4 种。 1. 使用 new 关键字创建对象 这是常用的创建对象的方法,语法格式如下: 2. 调用 java.lang.Class 或者 ja