stream流操作两个list根据某字段匹配再对其中一个list进行赋值
时间: 2024-11-27 20:11:03 浏览: 7
Stream流操作是一种高效处理集合数据的方式,特别适用于需要对列表进行过滤、映射或聚合等操作的情况。如果你有两个List,比如`List甲`和`List乙`,并且它们都有相同的某个字段(例如,都包含`Person`对象,并且有`id`属性),你可以按照那个字段进行匹配。
假设你想找到`List乙`中与`List甲`中某个`id`相匹配的元素,然后将匹配到的结果赋值给`List甲`的对应位置,可以这样做:
```java
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
// 假设Person类有一个getId()方法返回int类型的id
class Person {
// ...
}
List<Person> listA = ...; // List甲
List<Person> listB = ...; // List乙
// 使用stream操作找到匹配项并更新listA
List<Integer> matchingIds = listB.stream()
.filter(person -> !listA.isEmpty() && person.getId() == listA.get(0).getId()) // 匹配条件
.map(Person::getId) // 映射到id
.collect(Collectors.toList());
// 如果有匹配,则更新listA
if (!matchingIds.isEmpty()) {
for (int i = 0; i < listA.size(); i++) {
if (matchingIds.contains(listA.get(i).getId())) {
// 将listB中相应id的元素设置回listA
listA.set(i, listB.stream().filter(person -> person.getId() == listA.get(i).getId()).findFirst().orElse(null));
}
}
}
```
阅读全文