文件名重命名算法
/** * 重命名重复的文件名 * * @param fileNameList 文件名列表 * @return重命名后的文件名列表 */ private static List<String> getNoRepeatFileNameList(List<String> fileNameList) { //按文件名分组找到重复的文件名,使用LinkedHashMap保存分组结果,保证文件名顺序基本不变(重命名的除外) Map<String, List<String>> fileNameMap = fileNameList.stream() .collect(Collectors.groupingBy(x -> x, LinkedHashMap::new, Collectors.toList())); for (Map.Entry<String, List<String>> entry : fileNameMap.entrySet()) { List<String> valueList = entry.getValue(); if (valueList.size() > 1) { int index = 0; for (String name : valueList) { String newName = String.format("%s(%s)%s", name.substring(0, name.lastIndexOf(".")), index + 1, name.substring(name.lastIndexOf("."))); valueList.set(index, newName); index++; } } } // 遍历原始列表,取新文件名 List<String> newFileNameList = new ArrayList<>(); for (String fileName : fileNameList) { //从map中获取新文件名(依次取值) List<String> valueList = fileNameMap.get(fileName); newFileNameList.add(valueList.remove(0)); } return newFileNameList; }
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 实操Deepseek接入个人知识库
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
2018-03-20 java lock锁住特定对象