java中有两个list:List<String> list1和List<String>list2 其中list有“A”,"A,"B,"C",list2的元素有:"A","A","B","B","C","D"怎么判断list2包含哪些数据,不包含哪些数据,使用stream流解决
时间: 2024-09-20 19:17:05 浏览: 43
在 Java 中,可以使用 Stream API 来轻松地处理这个问题。首先,你需要将 `list2` 转换为一个不可变的集合(如 `Set`),然后通过 `filter`, `collect` 和 `difference` 等方法来找出 `list2` 包含和不包含于 `list1` 的数据。
这里是步骤:
```java
import java.util.*;
import java.util.stream.*;
// 假设已经定义了 List<String> list1 和 List<String> list2
// 将list2转换为Set以便去重并获取唯一值
Set<String> set2 = new HashSet<>(list2);
// 使用Stream过滤出list1中存在的元素
Set<String> intersection = list1.stream()
.filter(set2::contains)
.collect(Collectors.toSet());
// 计算差集,得到list2独有的元素
Set<String> exclusiveInList2 = set2.removeAll(intersection);
// 输出结果
System.out.println("list2包含于list1的元素:");
intersection.forEach(System.out::println);
System.out.println("\nlist2独有的元素:");
exclusiveInList2.forEach(System.out::println);
System.out.println("\nlist2不包含于list1的元素:");
set2.stream().filter(!intersection::contains).forEach(System.out::println);
阅读全文