2012-12-07 32 views
1

我正在为java编程一个类项目。 在我的项目中,我有飞机,机场和乘客。如何在java中动态创建列表?

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

只要从一个文件读取机场,因此他们可以改变,我怎么能根据这些机场创建列表?

我想要做的是一样的东西:

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

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

的问题是,正如我已经说过,机场的数量和名称可能有所不同,所以我该怎么办的一般表达式创建列表根据机场档案,然后根据乘客目的地机场将乘客加入这些列表?

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

在此先感谢

+0

你想是有多个列表?每架飞机的列表可能是? –

+0

我想根据我拥有的机场数量创建新的arrayLists。如果我有3个机场,程序将创建3个列表。然后乘客将根据目的地被添加到这些列表中。 – Joaocdn

+0

好吧,我会更具体地说明我现在所拥有的东西。 我有4班,机场,飞机,乘客和董事会。 机场班级有旅客列表和飞机列表。 飞机类有一个乘客列表。 乘客舱只有它的起源和目的地机场。 理事会类是其他事情发生的地方。 – Joaocdn

回答

7

你可以保持一个目的地或机场和乘客用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类,比如列表,地图和集合。

+0

打败我吧。您不必存储“字符串”,但将其视为地图<机场,地图<飞机,乘客>> –

+0

经验法则:如果您需要嵌套泛型类型,例如'Map >或者什么的,是时候上课了。 '列表'也许应该是'机场'或什么的。 – corsiKa

+0

@BillK也许 - 但然后你需要通过callLetter或其他东西来查找机场。 – corsiKa

0

您听起来像是在基元,字符串和集合方面思考得太多,而在对象方面还不够。

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

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

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

在编写更多代码之前,对您的问题做一点思考。

2

我可能会创建一个Map机场的机场名称作为关键和List乘客作为价值。

例如

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

airports.put("JFK", passengersToJFK); 
0

你不应该着眼于给列表的实际变量的对象唯一的名称,而是从字符串(目的地ID)创建一个映射到列表(乘客前往该目的地),并在添加列表飞往该地图,将每个新列表链接到其相关目的地。根据需要更新该地图中的列表。

0

做到这一点的最好方法是为三者创建对象。

你可能有一个机场的对象,看起来像这样:

 
    class Airport{ 
     String name; 
     List Airplane airplanes; 
    } 

那么你将有一个看起来像这样的飞机:

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

这样,你从对方撰写的对象以最终更容易理解和处理的方式。

注意,我要走了断的方法,如机场大概有像“addAirplane”的方法来添加另一架飞机,飞机对象具有addPassenger方法...