2014-01-11 43 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'的那一行不在那里,那么这是正确的。 –