2014-01-11 42 views
1

我有兩個列表,即如何比較兩個列表<t>對象?

List<Employee> oldEmplistList<Employee> newEmplist和我有比較兩者只有2性能Employee類的即empOrigIdempOrigNumber和這兩個屬性將是newEmplist只設置列表,所以我要比較這些newEmpListempIdempNumberoldEmpList中的性質。如果這匹配,我必須將oldEmpList中的整個元素替換爲newEmplist中的匹配項。

任何建議如何做到這一點?

+0

http://stackoverflow.com/questions/1075656/simple-way-to-find-if-two-different-lists-contain-exactly-the-same-elements - 儘管大多數方法依靠適當時在對象上定義「equals」。如果你需要在操作中做一些「額外」的事情 - 那就開始編寫代碼(例如一個循環,也許有兩個迭代器,並建立一個合適的結果)。畢竟,它是Java [7]。 – user2864740

回答

4
ListIterator<Employee> iterator = oldEmplist.listIterator(); 
while (iterator.hasNext()) { 
    Employee x = iterator.next(); 
    for (Employee y : newEmplist) { 
     if (x.empOrigId == y.empId && x.empOrigNumber == y.empNumber) { 
      iterator.set(y); 
      break; 
     } 
    } 
} 
+0

我對這個問題的理解是,如果說'break'的那一行不在那裏,那麼這是正確的。 –