加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

在java 8中迭代并映射两个列表

发布时间:2020-12-15 04:47:30 所属栏目:Java 来源:网络整理
导读:我有2个清单: List1:Object1(name1,id1) List2:Object2(name2,id2) 鉴于list1的大小与list2相同 我想迭代list2,如果list2的name2不为null,则更新list1的name1. 这是使用旧java的代码: for(Object1 obj1:list1) { for(Object2 obj2:list2) { if(obj1.getI
我有2个清单:

> List1:Object1(name1,id1)
> List2: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实现这个的最好方法?

解决方法

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

如果这是正确的,那么:

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

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

.filter(Objects::isNull)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读