我有一个名为 User 的对象。用户对象包含对象数组。在对象的嵌套数组中有一个名为 Status 的键。我想将 Status 的值从“NEW”映射或更改为“PROCESSED”。
我尝试迭代嵌套对象数组的值,并将 Status 的相应值从“NEW”替换为“PROCESSED”。我尝试了以下方法 -
user.positions().listIterator().forEachRemaining(e->e.positionItems().listIterator().
forEachRemaining(l->{
l.fulfillmentStatus().replace("NEW","PROCESSED");
}));
但是,上面的代码无法更改该值,因为 String 是不可变的。替换时显示警告“‘String.replace()’的结果被忽略”
您可以将每个
PositionItem
替换为新的,只需使用 fulfillmentStatus
更改每个索引处的元素即可更改 ListIterator#set
。
order.positions().forEach(e -> {
for (var it = e.positionItems().listIterator(); it.hasNext();) {
var curr = it.next();
it.set(curr.toBuilder().fulfillmentStatus(curr.fulfillmentStatus().replace("NEW","PROCESSED")).build());
}
});