当前位置: 首页 > web >正文

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 字段。

在这个循环中,refundlist 中的每一个 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 操作。这里 refundStream 中的每个元素。

  • 返回 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 是一个比较简单的选择。

  • 如果你需要返回一个新的列表,并且不想修改原列表(或者需要保留原列表),可以选择使用 mapcollect

这两种方式都能有效地替代传统的 for 循环。如果你有其他的流式操作需求,Stream 提供了丰富的功能(如过滤、排序、映射等),使得代码更加简洁且具有更好的可维护性。

http://www.xdnf.cn/news/3291.html

相关文章:

  • 微前端统一状态树实现方案
  • 傅里叶与相位偏移
  • Python实例题:Python实现简易局域网视频聊天工具
  • 日记 - 2025.4.30 四月计划回顾、五月计划安排
  • Python10天突击-字符串输出
  • 【NumPy完全指南】从基础操作到高性能计算实战
  • LeetCode路径总和系列问题解析:I、II、III的解决方案与优化
  • 深入剖析ELT与ETL的区别
  • 3.5/Q1,GBD最新文章解读
  • (即插即用模块-特征处理部分) 四十五、(2024 TGRS) SFF 浅层特征融合模块
  • 远程 Debugger 多用户环境下的用户隔离实践
  • 12.SpringDoc OpenAPI 功能介绍(用于生成API接口文档)
  • malloc的实现原理
  • [Android 15] 在GlobalActionsDialog 中新增项目
  • 业务部绩效考核关键指标与数据分析
  • 使用ZYNQ芯片和LVGL框架实现用户高刷新UI设计系列教程(第十讲)
  • 第六部分:实战项目与拓展
  • Windows下Dify安装及使用
  • 【AI提示词】SWOT分析师
  • Qt快速上手:QSettings高效配置读写实战指南
  • 解锁Windows异步黑科技:IOCP从入门到精通
  • 基于SpringBoot的母婴商城系统设计与实现(附源码+PPT+论文)
  • 电脑重复图片太多?推荐一款开源的图片去重工具ImageContrastTools
  • 你的Java项目经历,是金子还是沙子?
  • 快充诱骗协议芯片的工作原理及应用场景
  • 可视化网页自动化流程管理工具
  • 混合开发与平台集成:自定义插件开发
  • 【C++QT】Combo Box 组合框控件详解
  • intellij idea最新版git开启Local Changes
  • VARIAN安捷伦真空泵维修清洁保养操作SOP换油操作流程内部转子图文并茂内部培训手侧