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

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 提供了丰富的功能(如过滤、排序、映射等),使得代码更加简洁且具有更好的可维护性。

相关文章:

  • k8s术语之Replication Controller
  • MySQL中ROW_NUMBER() OVER的用法以及使用场景
  • CentOS网络之network和NetworkManager深度解析
  • windows系统常用快捷键(CMD常用命令,DOS常用命令)
  • PostgreSQL数据库操作基本命令
  • windows 下 oracle 数据库的备份与还原
  • 多线程系列一:认识线程
  • 【计算机网络】​TCP(传输控制协议)套接字,多线程远程执行命令编程​
  • 2025年真实面试问题汇总(一)
  • 【Python学习路线】零基础到项目实战
  • RFID光触发标签工业级分拣难题的深度解决方案
  • Vue3笔记摘录
  • 读论文笔记-CoOp:对CLIP的handcrafted改进
  • 兰亭妙微:全流程交互设计和设计前后对比
  • 如何加速机器学习模型训练:深入探讨与实用技巧
  • Vue2 vs Vue2.7 深度对比
  • 【Java】打印运行环境中某个类引用的jar版本路径
  • Nginx核心
  • 深入探索ChatClient:简化AI模型交互的强大工具
  • Compose笔记(二十一)--AnimationVisibility
  • 跨越三十年友情,61岁余隆和60岁齐默尔曼在上海再度合作
  • 龚正会见哥伦比亚总统佩特罗
  • 李峰已任上海青浦区委常委
  • 丰富“互换通”产品类型,促进中国金融市场高水平对外开放
  • 丹麦外交大臣拉斯穆森将访华
  • 鸿海下调全年营收展望:AI服务器业务强劲,预计今年营收增超50%