如何在java中动态创建列表?

时间:2012-12-07 17:10:30

标签: java arrays list

我正在用Java编写一个类项目。 在我的项目中,我有飞机,机场和乘客。

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

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

我想做的是:

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

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

问题在于,正如我所说,机场的数量和名称可能会有所不同,因此我如何根据机场文件进行创建列表的一般表达式,然后根据乘客目的地将乘客添加到这些列表中机场?

我可以从文件中读取机场数量并创建相同数量的列表,但是如何为此列表指定不同的名称?

提前致谢

5 个答案:

答案 0 :(得分:8)

您可以在一个以乘客管理为中心的特定班级中保留目的地或机场与Map的乘客列表之间的关联注册表。

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

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

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

如果您想要添加乘客,您可以根据String所代表的目的地获取乘客列表。

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

我建议你深入研究一些特定的多用途Java类,例如列表,地图和集合。

答案 1 :(得分:2)

我可能会创建一个Map个机场,其中机场名称为关键,乘客List为值。

e.g。

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

airports.put("JFK", passengersToJFK);

答案 2 :(得分:0)

你听起来就像是在原语,字符串和集合方面考虑得太多而在对象方面还不够。

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

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

您是否将Passengers添加到Airport?不,我认为他们属于Flight

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

答案 3 :(得分:0)

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

答案 4 :(得分:0)

最好的方法是为这三个人创建对象。

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

    class Airport{
        String name;
        List Airplane airplanes;
    }
那么你会有一架看起来像这样的飞机:

    class Airplane{
        String name; // ?? or bodyType?  or whatever else you need
        List Passenger passengers;
    }

通过这种方式,您可以以最容易理解和处理的方式将对象组合在一起。

请注意,我要离开方法,比如机场可能有像“addAirplane”这样的方法来添加另一架飞机,而飞机对象有一个addPassenger方法...