首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在java中动态创建列表而不复制?

如何在java中动态创建列表而不复制?
EN

Stack Overflow用户
提问于 2016-08-31 18:17:52
回答 4查看 193关注 0票数 0

关于类似的问题。How to dynamically create Lists in java?我有一个和被问到的人非常相似的问题。

在我的项目中,我有飞机,机场和乘客为PNR备案

旅客目的地机场是从数据库中导出的,但我必须将其添加到目的地列表中,并命名为airplanes。

因此数据库将包含如下内容

A380,JFK,PersonA

A380、JFK、PersonB

A330、LHR、PersonC

我的计划是从数据库中动态创建机场列表,并将具有相同目的地的乘客添加到列表中。

所以目前我有peronsA和personB和JFK,它们将在同一个列表中。虽然在LHR列表中只有personC会出现在LHR列表中,但有数十万条这样的记录和数百个机场列表需要创建,所以我必须动态创建这样的列表。

但问题是,我如何确定机场(JFK)列表是否已经存在,而不为该特定机场创建另一个列表?或者,是否有其他存储信息的方法?

伪代码:

代码语言:javascript
复制
while (dbrecord =true){
    if(passenger.destination == "JFK"){
        List<passenger> JFK(dynamic)= new ArrayList<passenger>();
        JFK(dynamic).add(passenger)
    }
EN

回答 4

Stack Overflow用户

发布于 2016-08-31 18:21:35

我不能百分之百地确定我是否理解了这个场景,但是避免重复的最好方法是使用像HashSet这样的集合结构

票数 3
EN

Stack Overflow用户

发布于 2016-08-31 18:21:20

你可以通过拥有一个Map<String, List<Passenger>>来实现。

含义:每当您处理一个目的地时,您都会询问map是否包含该目的地。如果是,它已经是一个值,它是一个列表;如果不是,则为该键添加一个新列表,如下所示:

代码语言:javascript
复制
Map<String, List<Passenger>> listsByDestination = new HashMap<>;

String destination = ... wherever
if (listsByDestination.contains(destination)) {
  ... already known 
} else {
  listsByDestination.put(destination, new ArrayList<>());
}

诸若此类。

旁白:我看重Passenger,因为Java中的类名以UpperCase开头。

票数 0
EN

Stack Overflow用户

发布于 2016-08-31 18:26:32

像这样的东西可能会对你有帮助

代码语言:javascript
复制
Map<String, List<Passenger>> pasengerMaps =  new HashMap();
if(pasengerMaps.contains("JFK")){

pasengerMaps.get("JFK").add(passenger)

}else{

pasengerMaps.put("JFK",new ArrayList<Passenger>());

}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39246881

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档