2013-12-11 22 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);检查一些名单是否包含当前元素...

相关问题