2013-12-11 21 views
-1

我有多個(三個或更多)的列表,如:獲取不在多個列表的所有元素

[a, b, c, d, a]; 
[b, d, e, c, a]; 
[c, f, a]; 

現在我希望所有的元素,這些元素無論是在一個單一的列表或多個列表,但不在所有列表中! 該示例的結果上面應該是:

[b, d, e, f]; 

任何解決方案? 謝謝!

+2

到目前爲止您的代碼有什麼問題? –

+0

生病給你提示,'removeAll' – user902383

+0

同一個元素可以在同一個列表中出現多次嗎?無論如何,你可能需要一個'Map'來映射每個元素到你找到的列表的數量。 – ajb

回答

0

您正在尋找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); 
} 
0

使用java.util.List,如果你有陣列使用Arrays.asList(arr);然後list.contains(el);檢查一些名單是否包含當前元素...

相關問題