我有多個(三個或更多)的列表,如:獲取不在多個列表的所有元素
[a, b, c, d, a];
[b, d, e, c, a];
[c, f, a];
現在我希望所有的元素,這些元素無論是在一個單一的列表或多個列表,但不在所有列表中! 該示例的結果上面應該是:
[b, d, e, f];
任何解決方案? 謝謝!
我有多個(三個或更多)的列表,如:獲取不在多個列表的所有元素
[a, b, c, d, a];
[b, d, e, c, a];
[c, f, a];
現在我希望所有的元素,這些元素無論是在一個單一的列表或多個列表,但不在所有列表中! 該示例的結果上面應該是:
[b, d, e, f];
任何解決方案? 謝謝!
您正在尋找retainAll方法找到的所有列表中的條目。其餘的只是簡單的收藏東西。
一旦你有你的所有列表中的項目列表,使用Set
(以確保您扔掉一式兩份),收集所有列表中的所有元素,然後用你的出現在所有列表中的條目列表中使用removeAll
。
public void test() {
List<String> aList = new ArrayList<>(Arrays.asList("a", "b", "c", "d", "a"));
List<String> bList = new ArrayList<>(Arrays.asList("b", "d", "e", "c", "a"));
List<String> cList = new ArrayList<>(Arrays.asList("c", "f", "a"));
// Not in all lists.
List<String> inAll = new ArrayList<>(aList);
inAll.retainAll(bList);
inAll.retainAll(cList);
// Unique results - all items in all lists.
Set<String> result = new HashSet<>(aList);
result.addAll(bList);
result.addAll(cList);
// But nothing that is in all lists.
result.removeAll(inAll);
System.out.println(result);
}
使用java.util.List
,如果你有陣列使用Arrays.asList(arr);
然後list.contains(el);
檢查一些名單是否包含當前元素...
到目前爲止您的代碼有什麼問題? –
生病給你提示,'removeAll' – user902383
同一個元素可以在同一個列表中出現多次嗎?無論如何,你可能需要一個'Map'來映射每個元素到你找到的列表的數量。 – ajb