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

优素福

我有2个清单:

  1. 清单1:对象1(名称1,ID1)
  2. 清单2:Object2(name2,id2)

给定list1的大小与list2相同

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

这是使用旧Java的代码:

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

用java.util.stream实现此目的的最佳方法是哪一种?

短跑运动员

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

如果正确,则:

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

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

    .filter(Objects::isNull)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章