java stream 两个list 根据两个list中相同的某一列,把list A的数据存到listB中个某个字段中去
时间: 2023-10-09 17:10:35 浏览: 130
QT 利用两种方式实现两个list中元素的互相移动
4星 · 用户满意度95%
假设我们有两个类,一个是ListA中存储的,另一个是ListB中存储的:
```java
public class ItemA {
private int id;
private String name;
private String value;
// 省略 getter 和 setter 方法
}
public class ItemB {
private int id;
private String name;
private String result;
// 省略 getter 和 setter 方法
}
```
我们可以使用 Java 8 的 Stream 来实现根据两个列表中相同的某一列,把 ListA 的数据存到 ListB 中的某个字段中:
```java
List<ItemA> listA = new ArrayList<>();
List<ItemB> listB = new ArrayList<>();
// 假设 listA 和 listB 中都有一个名为 id 的属性
// 先将 listA 转换成 Map,以 id 作为 key,ItemA 作为 value
Map<Integer, ItemA> mapA = listA.stream()
.collect(Collectors.toMap(ItemA::getId, Function.identity()));
// 遍历 listB,如果 mapA 中有相同 id 的 ItemA,则将其 value 设置到 ItemB 的 result 字段中
listB.forEach(itemB -> {
ItemA itemA = mapA.get(itemB.getId());
if (itemA != null) {
itemB.setResult(itemA.getValue());
}
});
```
上述代码中,我们先将 ListA 转换成了一个 Map,以 id 作为 key,这样可以方便地根据 id 查找到对应的 ItemA。然后遍历 ListB,如果在 mapA 中找到了相同 id 的 ItemA,则将其 value 设置到 ItemB 的 result 字段中。
阅读全文