我有两个数组列表 listA 和 listB 可能包含也可能不包含相同的元素。例如:
listA= [1,2,3] &
listB=[2,3,4]
我需要比较两个数组列表,并将 listA 中而不是 listB 中的元素添加到 listB 中。此外,如果 listB 中存在的任何其他元素不在 listA 中,我应该将其从 listB 中删除。
请帮助我如何用 Java 编写代码。
如果需要,我更喜欢使用 Iterator 方法。
您的描述表明您希望使用集合。例如,假设一个元素在 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,则不会删除条目。
尝试这个
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));
}
编写代码的简单步骤
首先执行删除
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);
}
}