java8两个list集合按Id 筛选
时间: 2024-09-18 21:10:37 浏览: 35
两个List集合取相同重复数据的方法
在Java 8中,你可以使用Stream API来处理这样的场景。假设你有两个List,每个List代表一个实体集合,比如Person列表和个人Info列表,它们都包含一个共同的字段id。你可以按照这个id筛选并合并这两个列表,如果某个Person有对应的个人Info信息。
以下是一个简单的示例:
```java
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
class Person {
private Long id;
// 其他属性...
}
class PersonalInfo {
private Long id;
private String info; // 或其他属性...
// 构造函数和getter/setter...
}
List<Person> personList = ...; // 人列表
List<PersonalInfo> personalInfoList = ...; // 个人信息列表
// 按照id筛选并合并
List<PersonWithInfo> result = personList.stream()
.map(person -> {
PersonalInfo pInfo = personalInfoList.stream()
.filter(info -> info.getId().equals(person.getId()))
.findFirst(); // 找到匹配的person的info,可能存在多个,这里取第一个
return pInfo == null ? new PersonWithInfo(person) : new PersonWithInfo(person, pInfo);
})
.collect(Collectors.toList());
class PersonWithInfo extends Person { // 如果需要,可以添加额外的信息字段
private PersonalInfo info;
// 构造函数和getter/setter...
}
```
在这个例子中,`result`将是一个新的List,其中包含Person对象,如果有对应的个人Info,就包含了PersonalInfo对象。如果没有找到匹配的Info,那么就只保留了Person对象。
阅读全文