我有一个下面给出的两个ArrayList作为样本.AccVO:compareKey,Amount字段
清单1:
AccVO[001,500]
AccVO[002,600]
AccVO[003,800]
Run Code Online (Sandbox Code Playgroud)
列表2:
AccVO[001,100]
AccVO[001,100]
AccVO[001,300]
AccVO[003,300]
AccVO[003,300]
AccVO[003,200]
AccVO[005,300]
AccVO[005,300]
Run Code Online (Sandbox Code Playgroud)
我已经对两个列表进行了排序.我必须将两个列表与compare键进行比较,并获取List2的记录以插入到数据库中.
示例代码:
for(AccVO accvo1 : List1){
for(AccVO accvo2 : List2){
if(accvo1.getCmpkey().equals(accvo2.getCmpkey())){
//insert the recs into the table
}
}
}
Run Code Online (Sandbox Code Playgroud)
由于我的列表大小会更大,即处理数百万条记录,我需要一些乐观的逻辑来循环记录.
提前感谢Prasanna
由于列表已排序,因此您可以在两个数组中使用索引,并且每次只增加较小的键:
int i = 0,j = 0;
while (i < List1.size() && j < List2.size()){
int x = List1.get(i).getCmpKey().CompareTo(List2.get(j).getCmpKey();
if (x == 0){
//add record
j++;
}else if(x < 0){
i++;
}else{
j++;
}
}
Run Code Online (Sandbox Code Playgroud)