两个List<String>的集合 求交集
时间: 2024-03-13 17:18:56 浏览: 51
我们可以使用Java 8中的Stream API来实现两个List<String>的集合求交集。具体实现如下:
```java
List<String> list1 = Arrays.asList("a", "b", "c");
List<String> list2 = Arrays.asList("b", "c", "d");
List<String> intersection = list1.stream()
.filter(list2::contains)
.collect(Collectors.toList());
System.out.println(intersection); // 输出 [b, c]
```
首先,我们将两个List<String>赋值给list1和list2。然后,我们使用list1的stream()方法创建一个Stream对象。接着,我们使用filter()方法过滤出在list2中也包含的元素。最后,我们使用collect()方法将过滤出来的元素收集到一个新的List<String>对象中,并将其赋值给intersection变量。最后,我们输出intersection即可得到两个List<String>的集合的交集。
相关问题
Java 现在有list<String>A 和list<String>B,把A集合独有的元素放入List<String>AA,B集合独有的元素放入List<BB>BB,AB共有的放入List<AB>AB
可以使用Java自带的集合操作来实现这个需求,具体代码如下:
```java
List<String> A = Arrays.asList("a", "b", "c");
List<String> B = Arrays.asList("b", "c", "d");
List<String> AA = new ArrayList<>(A);
AA.removeAll(B);
List<String> BB = new ArrayList<>(B);
BB.removeAll(A);
List<String> AB = new ArrayList<>(A);
AB.retainAll(B);
System.out.println("AA: " + AA); // 输出:AA: [a]
System.out.println("BB: " + BB); // 输出:BB: [d]
System.out.println("AB: " + AB); // 输出:AB: [b, c]
```
这里用到了List的removeAll()和retainAll()方法,它们分别可以去除两个集合的交集和差集。
两个集合是List<String>
如果两个集合都是 `List<String>` 类型的,同样可以使用 Java8 的 Stream API 来求它们的交集和差集。
1. 求交集
```java
List<String> listA = Arrays.asList("apple", "banana", "orange");
List<String> listB = Arrays.asList("banana", "orange", "pear");
List<String> intersection = listA.stream()
.filter(listB::contains)
.collect(Collectors.toList());
// 输出:[banana, orange]
System.out.println(intersection);
```
2. 求差集
```java
List<String> listA = Arrays.asList("apple", "banana", "orange");
List<String> listB = Arrays.asList("banana", "orange", "pear");
List<String> difference = Stream.concat(listA.stream(), listB.stream())
.filter(e -> !listA.contains(e) || !listB.contains(e))
.collect(Collectors.toList());
// 输出:[apple, pear]
System.out.println(difference);
```
注意,这里的差集是指 `listA` 和 `listB` 的不重复元素的集合,并不是 `listA` 相对于 `listB` 的差集。如果需要求相对差集,可以使用 `listA.removeAll(listB)` 或 `listB.removeAll(listA)` 方法。
阅读全文