比较java中包含相同对象的两个ArrayLists

Pra*_*nna 0 java algorithm

我有一个下面给出的两个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

ste*_*uck 5

由于列表已排序,因此您可以在两个数组中使用索引,并且每次只增加较小的键:

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)