Java对集合进行操作,赋值新字段
1、方法一:增强for循环
List<Refund> list = refundService.selectRefundList(queryParam);
for (Refund refund : list) {refund.setPayWay(refund.getPaymentMethod()); // 将支付方式赋值给付款方式
}
在 Java 中,当你使用
for循环遍历List<Refund>时,refund变量实际上是List中每个Refund对象的引用。所以,当你调用refund.setPayWay()时,实际上是修改了列表中对应元素的payWay字段。
在这个循环中,refund 是 list 中的每一个 Refund 对象的引用。所以,setPayWay() 会直接修改该对象的状态,而这个对象是在 list 中的。因此,不需要再特别处理存储问题。
对象没有更新:可能与get、set方法有关
2、方法二:stream流、forEach
import java.util.List;List<Refund> list = refundService.selectRefundList(queryParam);// 使用 Stream 来遍历并更新 payWay 字段
list.stream().forEach(refund -> refund.setPayWay(refund.getPaymentMethod())); // 将支付方式赋值给付款方式// 返回更新后的 list
return ResponseEntity.ok(list); // 确保这里返回的是更新后的 list
list.stream(): 将List<Refund>转换成Stream<Refund>,这样你就可以使用流式的操作来处理它。
forEach(refund -> refund.setPayWay(refund.getPaymentMethod())): 对Stream中的每个元素(即每个Refund对象)执行setPayWay操作。这里refund是Stream中的每个元素。返回
list: 处理完成后,你可以将更新后的list返回。
3、方法三: stream流、map
List<Refund> updatedList = list.stream().map(refund -> {refund.setPayWay(refund.getPaymentMethod()); // 设置付款方式return refund; // 返回更新后的 Refund 对象}).collect(Collectors.toList()); // 收集到一个新的 List// 返回更新后的 list return ResponseEntity.ok(updatedList);主要区别
forEach: 会直接在原列表上修改对象(没有创建新的列表)。
map+collect: 创建一个新的列表,并将每个更新后的对象添加到新列表中。性能和使用场景
如果你只是想更新原有的对象(修改
Refund对象的字段),直接使用forEach是一个比较简单的选择。如果你需要返回一个新的列表,并且不想修改原列表(或者需要保留原列表),可以选择使用
map和collect。这两种方式都能有效地替代传统的
for循环。如果你有其他的流式操作需求,Stream提供了丰富的功能(如过滤、排序、映射等),使得代码更加简洁且具有更好的可维护性。
