我正在用Java编写一个类项目。 在我的项目中,我有飞机,机场和乘客。
乘客目的地机场是随机创建的,但随后我必须将其添加到列表中,并列出该目的地的乘客。
只要从文件中读取机场因此它们可以变化,我如何根据这些机场创建列表?
我想做的是:
List<Passenger> passengersToJFK = new ArrayList<Passenger>();
.
.
.
if(passenger.destination == "JFK"){
passengersToJFK.add(passenger);
}
问题在于,正如我所说,机场的数量和名称可能会有所不同,因此我如何根据机场文件进行创建列表的一般表达式,然后根据乘客目的地将乘客添加到这些列表中机场?
我可以从文件中读取机场数量并创建相同数量的列表,但是如何为此列表指定不同的名称?
提前致谢
答案 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方法...