Java合并HashMap时如何让后合并的Map内容显示在结果底部?
问题根因
你当前使用的HashMap本身不维护元素的插入顺序,元素的存储位置由Key的哈希值决定,遍历输出的顺序和插入先后没有关联,因此会出现后合并的内容显示在结果顶部的问题。
解决方案
使用LinkedHashMap替换HashMap即可,LinkedHashMap默认会按照元素的插入顺序存储,后续插入的元素会自然排列在遍历顺序的末尾,符合你的需求。
如果存在重复Key的场景,你当前的merge逻辑是新值覆盖旧值,若希望重复Key的位置也更新到列表末尾,可以调整合并逻辑,先移除旧Key再插入新值。
修改后的代码示例:
// 替换HashMap为LinkedHashMap Map<Integer, String> dataToSage = new LinkedHashMap<Integer, String>(); for(InterventionDTO i : list) { Map<Integer, String> data = interfaceSageService.getDataToSendToSAGEFromIntervPlanMP(i.getIdintervention()); data.forEach((key, value) -> { // 如果需要重复key也移到末尾,保留这行,不需要可删除 dataToSage.remove(key); dataToSage.merge(key, value, (oldValue, newValue) -> { return newValue; }); }); }
内容的提问来源于stack exchange,提问作者pheromix
相关产品推荐
相关产品推荐

