在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) 鉴于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) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |