HashMap无法存储多值仅保留最后一条记录,代码问题排查求助
问题分析与解决办法
嗨,一眼就揪出问题所在啦——你在循环的每一次迭代里都重新创建了HashMap对象!
看你这段代码:
for (int i=0; i<params.size(); i++) { queries = new HashMap<String,Object>(); // 这里每次循环都会生成一个全新的空Map queries.put(params.get(i).get(0), params.get(i).get(1)); // ... 打印代码 }
每次循环走到queries = new HashMap<>()这行时,都会把queries变量指向一个全新的空HashMap,之前循环存进去的键值对直接就被丢弃了,最后自然只剩最后一次循环存入的pageSize=40。
修正方案
把HashMap的初始化代码移到循环外面,让整个循环共用同一个Map实例:
// 先在循环外初始化好HashMap Map<String, Object> queries = new HashMap<>(); for (int i=0; i<params.size(); i++) { queries.put(params.get(i).get(0), params.get(i).get(1)); System.out.println("Value of column: " + params.get(i).get(0)); System.out.println("Value of row: " + params.get(i).get(1)); System.out.println("values of the hashmap is: " + queries); }
这样修改后,每次循环的put操作都是往同一个HashMap里添加键值对,pageNumber=1和pageSize=40就都能被正常保存下来啦。
内容的提问来源于stack exchange,提问作者Sayen
相关产品推荐
相关产品推荐

