我有两个列表,我遍历一个列表并尝试匹配一些项目,然后将一个列表的内容替换为另一个列表。
public static void setLtItems(List<ItmResponse> list1, List<ItmResponse> list2){
ListIterator<ItmResponse> list1Iterator = list1.listIterator();
while (list1Iterator.hasNext()) {
ItmResponse a= list1Iterator.next();
for (ItmResponse b : list2) {
if (a.getOrgTransNo().equalsIgnoreCase(b.getOrgTransNo())) {
// replace the item in list1 with the list2 item
list1Iterator.set(b);
}
}
上面的代码工作正常但是如果列表2还有一个项目与list1中的项目匹配,该项目未添加到list1,因为list1只包含1个项目,list列出了2个与list1项目匹配的项目。因此,在替换list1中list2的第1项之后,我必须将list2的第二项添加到list1作为第二项。如何在java中执行此操作?
答案 0 :(得分:1)
尝试
while (list1Iterator.hasNext()) {
boolean found = false; // new
ItmResponse a= list1Iterator.next();
for (ItmResponse b : list2) {
if (a.getOrgTransNo().equalsIgnoreCase(b.getOrgTransNo())) {
// replace the item in list1 with the list2 item
if (!found) {
list1Iterator.set(b);
found = true;
}
else {
list1Iterator.add(b);
}
}
}
答案 1 :(得分:-1)
使用OrgTransNo对list1和list2进行排序
如果值包含在list1中,则广告添加到list1而不设置...