用java查找两个list对象中根据某个属性的交集
时间: 2024-04-29 17:25:51 浏览: 106
假设我们有两个List对象,每个对象都包含一个Person类的实例,我们要找到这两个List中根据id属性的交集,可以使用Java 8的Stream API来实现。
首先,我们要定义Person类:
```
public class Person {
private int id;
private String name;
public Person(int id, String name) {
this.id = id;
this.name = name;
}
public int getId() {
return id;
}
public String getName() {
return name;
}
}
```
然后,我们可以定义两个List对象:
```
List<Person> list1 = Arrays.asList(
new Person(1, "Alice"),
new Person(2, "Bob"),
new Person(3, "Charlie")
);
List<Person> list2 = Arrays.asList(
new Person(2, "Bob"),
new Person(4, "David"),
new Person(5, "Emily")
);
```
现在,我们可以使用Stream API来查找这两个List中根据id属性的交集:
```
List<Person> intersection = list1.stream()
.filter(p1 -> list2.stream()
.anyMatch(p2 -> p2.getId() == p1.getId()))
.collect(Collectors.toList());
```
这个代码片段使用了两个Stream对象,先遍历list1,然后对于每个Person对象,使用anyMatch方法在list2中查找是否存在相同的id属性的Person对象。如果存在,就将这个Person对象加入到结果集合中。最后,我们使用collect方法将结果转换为List对象。
现在,intersection集合中包含了这两个List中根据id属性的交集。
阅读全文