You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java中向List添加Map时元素被覆盖的问题求助

解决循环存储Map到列表时被覆盖的问题

你代码的问题核心就是循环外创建的Map被重复修改并添加到列表,所有列表元素都指向同一个Map实例,最后自然全是最后一次修改的数据。

修正方法很简单:把Map的创建移到循环内部,每次循环都新建一个独立的Map对象,这样每个元素都是互不关联的实例。

修正后的代码:

// 初始化存储结果的列表
List<Map<String, String>> citiesStatesList = new ArrayList<>();

while(cityAndState.next()){
    // 每次循环新建一个Map,存储当前行的城市和州
    Map<String, String> cityStateMap = new HashMap<>();
    cityStateMap.put("city", cityAndState.getString("city"));
    cityStateMap.put("state", cityAndState.getString("state"));
    // 将新的Map添加到列表
    citiesStatesList.add(cityStateMap); 
}

另外注意你原代码里的几个语法错误:

  • 列表声明时少了闭合尖括号,正确写法是List<Map<String,String>>
  • 变量名搞混了:原代码里citiesStates是List,却调用了put方法(List没有这个方法),应该是Map调用put,再把Map添加到List里,建议用更清晰的变量名避免混淆。

内容的提问来源于stack exchange,提问作者questionsneedanswers

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 17:35:33