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

List<map<String,Object>下划线转驼峰

方案一:创建新的 Map(推荐)

List<Map<String, Object>> maps = projectMapper.photovoltaicQueryBySectionId(tableNameByProductId, sectionId);List<Map<String, Object>> result = maps.stream().map(originalMap -> {Map<String, Object> newMap = new LinkedHashMap<>();originalMap.forEach((key, value) -> {String camelKey = underlineToCamel(key);newMap.put(camelKey, value);});return newMap;}).collect(Collectors.toList());

方案二:原地修改(需要小心处理)

List<Map<String, Object>> maps = projectMapper.photovoltaicQueryBySectionId(tableNameByProductId, sectionId);// 先收集所有需要修改的键值对,再统一处理
maps.forEach(map -> {Map<String, Object> temp = new HashMap<>();// 先收集转换后的键值对map.forEach((key, value) -> {String camelKey = underlineToCamel(key);temp.put(camelKey, value);});// 清空原map并放入转换后的数据map.clear();map.putAll(temp);
});

方案三:使用 Iterator 安全删除(如果你确实需要原地修改)

List<Map<String, Object>> maps = projectMapper.photovoltaicQueryBySectionId(tableNameByProductId, sectionId);maps.forEach(map -> {Iterator<Map.Entry<String, Object>> iterator = map.entrySet().iterator();Map<String, Object> newEntries = new HashMap<>();while (iterator.hasNext()) {Map.Entry<String, Object> entry = iterator.next();String camelKey = underlineToCamel(entry.getKey());newEntries.put(camelKey, entry.getValue());iterator.remove(); // 安全删除原条目}map.putAll(newEntries);
});

推荐使用方案一

因为它:

  • 避免并发修改异常
  • 代码更清晰
  • 不会意外修改原始数据结构
  • 符合函数式编程的无副作用原则

完整的工具方法

public List<Map<String, Object>> convertToCamelCase(List<Map<String, Object>> maps) {if (maps == null) {return new ArrayList<>();}return maps.stream().map(originalMap -> {Map<String, Object> newMap = new LinkedHashMap<>();originalMap.forEach((key, value) -> {String camelKey = underlineToCamel(key);newMap.put(camelKey, value);});return newMap;}).collect(Collectors.toList());
}private String underlineToCamel(String str) {if (str == null || str.isEmpty()) {return str;}StringBuilder result = new StringBuilder();boolean nextUpperCase = false;for (int i = 0; i < str.length(); i++) {char currentChar = str.charAt(i);if (currentChar == '_') {nextUpperCase = true;} else {if (nextUpperCase) {result.append(Character.toUpperCase(currentChar));nextUpperCase = false;} else {result.append(currentChar);}}}return result.toString();
}
http://www.dtcms.com/a/494381.html

相关文章:

  • List.subList() 返回值为什么不能强转成 ArrayList
  • phpcms网站转移网站关键词百度排名在下降
  • mac使用本地jdk启动elasticsearch解决elasticsearch启动时jdk损坏问题
  • 手机在初次联网的底层流程-关于EPC信令附着
  • 2025年红米手机上市了哪些款式,本别包含哪些版本,就上市时间、硬件参数、性能、价格等方面进行对比,加入横向竞品对比分析,按价位段划分推荐人群。
  • Go Web 编程快速入门 02 - 认识 net/http 与 Handler 接口
  • 成都网站建设网站制作济南网站制作哪家强
  • 广州做网站的网络公司网站建设美文
  • 云原生时代的数据库字段加密:在微服务与 Kubernetes 中实现合规与敏捷的统一
  • 虚拟机监控全攻略:从基础到云原生实战
  • fastgpt 社区版探究:mongo db 全文检索算法探秘
  • 防爆手机与普通手机有什么区别?防爆手机哪个牌子好?
  • 聊聊 Unity(小白专享、C# 小程序 之 日历、小闹钟)
  • 在vscode中全选后,同时在每行行尾,开始多行编辑(Mac版)
  • C4D域的重要修改层之延迟衰减和量化之解析
  • 建设银行网站网址是什么柳州电商网站建设
  • 记录WinFrom 使用 Autoupdater.NET.Official 进行软件升级更新,避免遗忘
  • 【汇编】RAX,eax,ax,ah,al 关系
  • 苍穹外卖 Day12 实战总结:Apache POI 实现 Excel 报表导出全流程解析
  • 网站分页符怎么做珠海网站建设哪个好薇
  • Redis的Docker安装
  • Windows 11 24H2 图形化安装 Docker Desktop(自定义安装路径到 D 盘)
  • python+uniapp基于微信小程序的瑜伽体验课预约系统
  • 什么是Bug呢?
  • 怎么制作网站记事本嘉兴网络科技有限公司
  • 外贸网站建设有用吗做外贸常用那几个网站
  • 【小白笔记】在 PyTorch 和 NumPy 这样的张量库中,形状(Shape) (3,) 的真正含义
  • 新版视频直播点播平台EasyDSS用视频破局,获客转化双提升
  • 【OS笔记07】:进程和线程5-进程的同步与互斥
  • 基于Session和Redis实现短信验证码登录