2

我正在为一个类项目用java编程。在我的项目中,我有飞机、机场和乘客。

乘客目的地机场是随机创建的,但随后我必须将其添加到包含该目的地乘客的列表中。

只要从文件中读取机场,因此它们可以变化,我如何根据这些机场创建列表?

我想做的是:

List<Passenger> passengersToJFK = new ArrayList<Passenger>();
.
.
.

if(passenger.destination == "JFK"){
   passengersToJFK.add(passenger);
}

问题是,正如我所说,机场的数量和名称可能会有所不同,那么我该如何做一个通用表达式,根据机场文件创建列表,然后根据乘客目的地机场将乘客添加到这些列表中?

我可以获得从文件中读取的机场数量并创建相同数量的列表,但是我如何为这个列表赋予不同的名称?

提前致谢

4

5 回答 5

9

您可以将目的地或机场与带有 , 的乘客列表之间的关联注册表保存在以Map乘客管理为中心的特定类中。

Map<String,List<Passenger>> flights = new HashMap<String,List<Passenger>>();

然后,每当您想添加新目的地时,您都会放置一个新的空列表并

public void addDestination(String newDestination) {
    flights.put(newDestination, new ArrayList<Passenger>());
}

当您要添加乘客时,您可以根据 a 表示的目的地获取乘客列表String

public void addPassengerToDestination(String destination, Passenger passenger) {
    if(flights.containsKey(destination))
        flights.get(destination).add(passenger);        
}

我建议您更深入地研究一些特定的多用途 Java 类,例如 Lists、Maps 和 Sets。

于 2012-12-07T17:13:32.883 回答
2

我可能会创建一个Map以机场名称为键、以List乘客为值的机场。

例如

Map<String, List<String>> airports = new HashMap<String, List<String>>();

airports.put("JFK", passengersToJFK);
于 2012-12-07T17:14:43.197 回答
0

您听起来好像在原语、字符串和集合方面考虑得太多,而在对象方面考虑得不够。

Java 是一种面向对象的语言;开始考虑对象和封装。

你的Passenger课程有一个良好的开端。继续Airport

你加PassengersAirport?不,我认为它们属于Flight.

在编写更多代码之前,请先考虑一下您的问题。

于 2012-12-07T17:13:34.570 回答
0

您不应该专注于为列表对象的实际变量提供唯一名称,而是创建一个从字符串(目的地 id)到列表(前往该目的地的乘客)的映射,并将列表动态添加到该映射,链接每个到其相关目的地的新清单。根据需要更新该地图中的列表。

于 2012-12-07T17:15:45.317 回答
0

最好的方法是为所有三个创建对象。

您可能有一个如下所示的 Airport 对象:

    类机场{
        字符串名称;
        列出飞机飞机;
    }

那么你会有一架看起来像这样的飞机:

    类飞机{
        字符串名称;// ?? 还是bodyType?或者你需要的任何其他东西
        列出乘客乘客;
    }

通过这种方式,您以一种最终更容易理解和处理的方式组合您的对象。

请注意,我将省略方法,例如 Airport 可能有一个像“addAirplane”这样的方法来添加另一架飞机,而飞机对象有一个 addPassenger 方法......

于 2012-12-07T17:20:11.493 回答