我有多个(三个或更多)的列表,如:获取不在多个列表的所有元素
[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