我有2个清单:
给定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
。似乎没有任何检查是否其中的项目名称为list1
null。
如果正确,则:
list2.forEach(obj2 -> list1.stream()
.filter(obj1 -> obj1.getId().equals(obj2.getId()))
.forEach(obj1 -> obj1.setName(obj2.getName()));
如果要检查名称是否为空,请在设置名称之前添加新的过滤器:
.filter(Objects::isNull)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句