2016-07-06 50 views
-3

我有两个ArrayList,我做了我的数据库查询后收到,查询的结果将返回很多元素(> 500.000元素)。我需要在两个列表的联合结果之间进行合并以创建一个Java对象。问题是,它如何能够有效地从两个不同的数据库合并两个列表?结果列表如下:Java合并大列表

列表A

Id1, Name1, Description1 
Id2, Name2, Description2 
Id3, Name3, Description3 

列表B

Id1, Position1 
Id2, Position2 
Id3, Position3 

结果

Id1, Name1, Description1, Position1 
Id2, Name2, Description2, Position2 
Id3, Name3, Description3, Position3 

谢谢!

+5

什么是 “BBDD查询”?如果您的意思是来自数据库的查询,那么您应该让数据库完成工作;重写你的SQL查询,以便数据库返回你需要的结果,而不是做两个查询并在你自己的程序中进行连接。 – Jesper

+1

BBDD查询 - 可能是数据库查询的帕金森版本 –

+0

对不起,我对两个不同的数据库做了两个不同的查询:list A - > DB A和listB - > DB B –

回答

0

如果下面条件为真:

  1. 的ArrayList保持逗号分隔的字符串对象
  2. Id字段首先发生在第二列表中,并且不包含逗号字符
  3. 的计数和序列这两个列表中的项都是一样的

然后下面的代码应该做合并。

ArrayList<String> listA = new ArrayList<String>(); 
listA.add("Id1, Name1, Description1"); 
listA.add("Id2, Name2, Description2"); 
listA.add("Id3, Name3, Description3"); 

ArrayList<String> listB = new ArrayList<String>(); 
listB.add("Id1, Position1"); 
listB.add("Id2, Position2"); 
listB.add("Id3, Position3"); 

ArrayList<String> mergedList = new ArrayList<String>(); 
Integer index=-1; 
for(String listAEntry : listA){ 
    index++; 
    mergedList.add(listAEntry.concat(listB.get(index).replaceFirst(".*,", ","))); 
} 

这里的合并列表的内容:

Id1, Name1, Description1, Position1 
Id2, Name2, Description2, Position2 
Id3, Name3, Description3, Position3