我有多个(三个或更多)列表,如:
[a, b, c, d, a];
[b, d, e, c, a];
[c, f, a];
现在我想要所有元素,这些元素可以在单个列表中,也可以在多个列表中,但不是在所有列表中! 以上示例的结果应为:
[b, d, e, f];
任何解决方案? 谢谢!
答案 0 :(得分:0)
使用java.util.List
,如果阵列使用Arrays.asList( arr );
,然后使用list.contains( el );
检查某些列表是否包含当前元素......
答案 1 :(得分: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);
}