我有两个数组列表listA和listB,它们可能包含也可能不包含相同的元素。 例如:
listA= [1,2,3] &
listB=[2,3,4]
我需要比较两个数组列表,并将listA中存在的元素添加到listB中而不是listB中。此外,如果列表B中存在的任何其他元素不在listA中,我应该从listB中删除它。
请帮助我如何使用Java编写代码。
如果需要,我更喜欢使用Iterator方法。
答案 0 :(得分:1)
您的描述表明您希望使用套装。例如,假设元素在A中两次但仅在B中一次。它应该被添加到B吗?
您问题的最简单答案是
List listA = ...
List listB = ...
listB.clear();
listB.addAll(listA);
但是假设你想保留一些订单,你可以做。
List listA = ...
List listB = ...
Set setA = new HashSet(listA);
setA.removeAll(listB);
Set setB = new HashSet(listB);
setB.removeAll(listA);
listB.addAll(setA);
listB.removeAll(setB);
注意:如果元素的A超过B,则不会添加条目,如果B的元素多于A,则不会删除条目。
答案 1 :(得分:0)
试试这个
for(int i : listA)
if(!listB.contains(i)) listB.add(i);
for(int j : listB)
if(!listA.contains(j)) listB.remove(j);
否则
Arrays.sort(listA); Arrays.sort(listB);
for(int i = 0; i < listA.length(); i++)
{
if(!listB.contains(listA.get(i))) listB.add(listA.get(i));
if(!listA.contains(listB.get(i))) listB.remove(listA.get(i));
}
答案 2 :(得分:0)
编写代码的简单步骤
首先执行删除
Iterate ListB
For each element in ListB, check if it is present in List A
If Not, delete from ListB
else continue
Close your loops
然后加法
Iterate ListA
For each element in ListA, check if it is present in List B
If Not, add to ListB
else continue
Close your loops
示例代码:
List<Integer> listA = ..
List<Integer> listB = ..
for(Integer intB: listB)
if(!listA.contains(intB)){
listB.remove(intB);
}
}
for(Integer intA: listA)
if(!listB.contains(intA)){
listB.add(intA);
}
}