3 回答

TA貢獻(xiàn)1111條經(jīng)驗(yàn) 獲得超0個(gè)贊
復(fù)制第一個(gè)列表,并將其用于第二個(gè)列表。因?yàn)槿绻鷱牡谝粋€(gè)列表中刪除重復(fù)項(xiàng),然后將其與第二個(gè)列表進(jìn)行比較,則所有值都將是唯一的,因?yàn)橹貜?fù)項(xiàng)已從第一個(gè)列表中刪除。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貢獻(xiàn)1797條經(jīng)驗(yàn) 獲得超4個(gè)贊
在這種情況下,不應(yīng)使用“全部刪除”:
listDir.removeAll(listDB);
listDB.removeAll(listDir);
因?yàn)橐坏┠銖?listDir 中刪除了公共元素“一”,listDB 仍然包含它,并且不會(huì)被刪除,因?yàn)?listDir 不包含它。所以你最終會(huì)得到列表DB,其中包含它的原始元素。listDB.removeAll(listDir)
一種可能的解決方案是遍歷兩個(gè)列表并檢查元素是否通用。盡管列表大小相同,但您可以在同一循環(huán)中遍歷它們。
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貢獻(xiàn)1799條經(jīng)驗(yàn) 獲得超6個(gè)贊
你好,對(duì)不起我的初學(xué)者代碼在這里,但你可以做第三個(gè)數(shù)組列表,循環(huán)通過第一個(gè),然后在第一個(gè)數(shù)組列表中添加所有元素。然后遍歷第二個(gè)列表,并在第三個(gè)數(shù)組列表中添加元素(如果不存在)或刪除元素(如果存在)??纯聪旅娴拇a,希望它有幫助
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));
}
}
}
添加回答
舉報(bào)