工作中用到了list的取差集,發現還是挺好用的。
所以記錄下。
需求 | list的方法 | 說明 | 備注 |
---|---|---|---|
交集 | listA.retainAll(listB) | listA內容變為listA和listB都存在的對象 | listB不變 |
差集 | listA.removeAll(listB) | listA中存在的listB的內容去重 | listB不變 |
並集 | listA.removeAll(listB) listA.addAll(listB) |
為了去重,listA先取差集,然后追加全部的listB | listB不變 |
測試代碼:
// 交集
List<String> listA_01 = new ArrayList<String>(){{
add("A");
add("B");
}};
List<String> listB_01 = new ArrayList<String>(){{
add("B");
add("C");
}};
listA_01.retainAll(listB_01);
System.out.println(listA_01); // 結果:[B]
System.out.println(listB_01); // 結果:[B, C]
// 差集
List<String> listA_02 = new ArrayList<String>(){{
add("A");
add("B");
}};
List<String> listB_02 = new ArrayList<String>(){{
add("B");
add("C");
}};
listA_02.removeAll(listB_02);
System.out.println(listA_02); // 結果:[A]
System.out.println(listB_02); // 結果:[B, C]
// 並集
List<String> listA_03 = new ArrayList<String>(){{
add("A");
add("B");
}};
List<String> listB_03 = new ArrayList<String>(){{
add("B");
add("C");
}};
listA_03.removeAll(listB_03);
listA_03.addAll(listB_03);
System.out.println(listA_03); // 結果:[A, B, C]
System.out.println(listB_03); // 結果:[B, C]