gpt4 book ai didi

java - 在 Java 8 中迭代和映射两个列表

转载 作者:搜寻专家 更新时间:2023-11-01 01:16:01 24 4
gpt4 key购买 nike

我有 2 个列表:

  1. List1: Object1 (name1, id1)
  2. 列表 2:对象 2(name2, id2)

给定 list1 的大小与 list2 相同

我想遍历 list2,如果 list2 的 name2 不为空,则更新 list1 的 name1。

这是使用旧 java 的代码:

  for(Object1 obj1:list1) {
for(Object2 obj2:list2) {
if(obj1.getId1.equals(obj2.getId2)) {
obj1.setName1(obj2.getName2);
}
}
}

使用 java.util.stream 实现此功能的最佳方法是什么?

最佳答案

明确一点,我认为您的代码旨在执行以下操作:将 list1 中每个项目的名称更新为 list2 中任何项目的名称具有相同的 ID。似乎没有任何检查 list1 中的项目名称是否为空。

如果那是正确的,那么:

list2.forEach(obj2 -> list1.stream()
.filter(obj1 -> obj1.getId().equals(obj2.getId()))
.forEach(obj1 -> obj1.setName(obj2.getName()));

如果要检查名称是否为空,则在设置名称之前添加一个新过滤器:

    .filter(Objects::isNull)

关于java - 在 Java 8 中迭代和映射两个列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35408435/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com