多个List 如何取并集、交集
public static void main(String[] args) {
List<String> list1 = new ArrayList<>();
list1.add("北京");
list1.add("上海");
list1.add("成都");
list1.add("漠河");
List<String> list2 = new ArrayList<>();
list2.add("北京");
list2.add("上海");
list2.add("成都");
list2.add("三亚");
List<String> list3 = new ArrayList<>();
list3.add("北京");
list3.add("上海");
list3.add("成都");
list3.add("新疆");
// 并集
List<String> list = new ArrayList<>();
list.addAll(list1);
list.addAll(list2);
list.addAll(list3);
System.out.println("并集:"+list);
// 交集
List<List<String>> lists = new ArrayList<>();
lists.add(list1);
lists.add(list2);
lists.add(list3);
Set<String> set = lists.stream().flatMap(List::stream).collect(Collectors.toSet());
System.out.println("去重并集:"+set);
for (List<String> s1 : lists) {
set = set.stream().filter(s1::contains).collect(Collectors.toSet());
}
System.out.println("交集:"+set);
}
输出结果
并集:[北京, 上海, 成都, 漠河, 北京, 上海, 成都, 三亚, 北京, 上海, 成都, 新疆]
去重并集:[成都, 上海, 三亚, 新疆, 漠河, 北京]
交集:[成都, 上海, 北京]