3 回答
TA贡献1111条经验 获得超0个赞
复制第一个列表,并将其用于第二个列表。因为如果您从第一个列表中删除重复项,然后将其与第二个列表进行比较,则所有值都将是唯一的,因为重复项已从第一个列表中删除。removeAll
Collection<String> listDir = new ArrayList(Arrays.asList("1","2", "3", "4", "5", "6", "7"));
Collection<String> listDirCopy = new ArrayList<>();
listDirCopy.addAll(listDir);
Collection<String> listDB = new ArrayList(Arrays.asList("1","3", "5", "7", "9"));
List<String> destinationList = new ArrayList<String>();
listDir.removeAll(listDB);
listDB.removeAll(listDirCopy);
destinationList.addAll(listDir);
destinationList.addAll(listDB);
System.out.println(destinationList);
TA贡献1797条经验 获得超4个赞
在这种情况下,不应使用“全部删除”:
listDir.removeAll(listDB);
listDB.removeAll(listDir);
因为一旦你从 listDir 中删除了公共元素“一”,listDB 仍然包含它,并且不会被删除,因为 listDir 不包含它。所以你最终会得到列表DB,其中包含它的原始元素。listDB.removeAll(listDir)
一种可能的解决方案是遍历两个列表并检查元素是否通用。尽管列表大小相同,但您可以在同一循环中遍历它们。
for(int i=0;i<listDB.size();i++){
if(!listDB.contains(listDir.get(i)){
resultList.add(listDir.get(i))
}
if(!listDir.contains(listDB.get(i)){
resultList.add(listDB.get(i))
}
}
TA贡献1799条经验 获得超6个赞
你好,对不起我的初学者代码在这里,但你可以做第三个数组列表,循环通过第一个,然后在第一个数组列表中添加所有元素。然后遍历第二个列表,并在第三个数组列表中添加元素(如果不存在)或删除元素(如果存在)。看看下面的代码,希望它有帮助
public void sort(ArrayList<String> one, ArrayList<String> two){
ArrayList<String> three = new ArrayList<>();
three.addAll(one);
for (int i = 0; i < two.size(); i++) {
if (three.contains(two.get(i))){
three.remove(two.get(i));
}else {
three.add(two.get(i));
}
}
}
添加回答
举报