java 两个list<String>取交集
时间: 2023-09-20 11:12:04 浏览: 150
可以使用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>分别用Arrays.asList()转换为List,然后使用Stream API的filter()方法将list1中包含在list2中的元素筛选出来,最后使用collect()方法将筛选出来的元素收集到一个新的List中。
相关问题
java8 两个list<bean>取交集
在Java 8中,要取得两个List<Bean>的交集,你可以利用Stream API来实现。首先,需要将两个List转换为Stream,然后使用`filter`方法配合`anyMatch`来找出两个列表中的共有元素。以下是一个示例代码:
```java
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;
public class ListIntersectionExample {
public static void main(String[] args) {
// 假设有两个Bean类的List
List<Bean> list1 = new ArrayList<>();
List<Bean> list2 = new ArrayList<>();
// 填充数据...
// 使用Stream API取得交集
List<Bean> intersection = list1.stream()
.filter(list2::contains)
.collect(Collectors.toList());
// intersection现在包含了list1和list2的交集
}
}
class Bean {
private int id;
// 其他属性...
// 构造器、getter和setter方法...
}
```
在这个例子中,`list1.stream().filter(list2::contains)`操作会遍历list1中的所有元素,`filter`方法中的`list2::contains`是一个方法引用,它会检查list1中的每个元素是否存在于list2中。如果存在,那么这个元素就会被包含在最终的Stream结果中。最后,使用`collect(Collectors.toList())`将Stream中的元素收集到一个新的List中。
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()方法,它们分别可以去除两个集合的交集和差集。
阅读全文