如何更改嵌套对象数组中字符串的值?

问题描述 投票:0回答:1

我有一个名为 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()’的结果被忽略”

java arrays java-stream
1个回答
0
投票

您可以将每个

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());
    }
});
© www.soinside.com 2019 - 2024. All rights reserved.