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
相关产品推荐
相关产品推荐

