短视频开源源码,报错信息显示ID重复的解决方案
短视频开源源码,报错信息显示ID重复的解决方案
原因分析
在最终添加的方法中,出现了重复ID的报错。对于为什么ID会重复,我思考了很久也没有想通。我沿着代码往上找到了saveList。
int batchSize = 5000; if (CollUtil.isNotEmpty(saveList)) { List<List<Map<String, Object>>> batchList = ListUtil.partition(saveList, batchSize); for (List<Map<String, Object>> batch : batchList) { if (CollUtil.isNotEmpty(batch)) { firstRecordMapper.insertJghzLdryList(batch.stream().filter(v -> v != null && ObjectUtil.isNotEmpty(v.get("ID"))).collect(Collectors.toList())); } } }
代码大致如上所示。
for (Map<String, Object> item : list) { ... Map<String, Object> oneCellMap = new HashMap<String, Object>(); // 遍历这一类型的10个二级指标,每个指标存成一行数据 for (int i = 0; i < secIndexNameList.size(); i++) { ... oneCellMap.clear(); oneCellMap.put("ID", IdUtilV2.getInstance().getId()); ... saveList.add(oneCellMap); px++; } // 保存这一行数据的 综合得分 oneCellMap.clear(); oneCellMap.put("ID", IdUtilV2.getInstance().getId()); ... saveList.add(oneCellMap); }
我也不是很确定,但我怀疑问题出在这里,于是我做了以下修改:
for (Map<String, Object> item : list) { ... // 遍历这一类型的10个二级指标,每个指标存成一行数据 for (int i = 0; i < secIndexNameList.size(); i++) { ... Map<String, Object> oneCellMap = new HashMap<String, Object>(); oneCellMap.put("ID", IdUtilV2.getInstance().getId()); ... saveList.add(oneCellMap); px++; } // 保存这一行数据的 综合得分 Map<String, Object> oneCellMap = new HashMap<String, Object>(); oneCellMap.put("ID", IdUtilV2.getInstance().getId()); ... saveList.add(oneCellMap); }
然后问题就解决了。我感到很奇怪,后来才反应过来…原来是使用了同一个对象。
解决方案
问题的根本原因是在循环中重复使用了同一个oneCellMap对象,导致了ID重复的问题。在第一个版本的代码中,每次循环都会清空oneCellMap对象并重新添加ID,但是由于saveList中保存的是引用,所以最终saveList中的所有oneCellMap对象的ID都是相同的。
在修改后的代码中,每次循环都创建了一个新的oneCellMap对象,确保了每个oneCellMap对象的ID都是唯一的,解决了ID重复的问题。
以上就是短视频开源源码,报错信息显示ID重复的解决方案, 更多内容欢迎关注之后的文章
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
2023-11-16 直播平台搭建,vue中实现图片懒加载的几种方法
2023-11-16 视频直播系统源码,自定义背景和状态管理
2023-11-16 直播系统源代码,Vue 禁止输入框输入空格
2022-11-16 在线直播系统源码,scroll-view的横向滚动
2022-11-16 直播app开发搭建,centos7修改密码
2022-11-16 直播网站源码,Vue实现拖拽穿梭框功能两种方式
2021-11-16 直播电商源码,活动开始时间计时器