Java如何调整SQL查询结果输出格式,合并独立键值对为单个映射?
问题
我从SQL查询拿到结果后,想输出特定格式的键值对,但改了半天没成功。现在的代码每次循环生成单独的键值对Map,导致输出里每个键值对都带大括号,而我想要所有键值对都放在同一个大括号里。
我的代码如下:
public List<Map<String, String>> getDemoNames() { List<Map<String, String>> demoNames = new ArrayList<>(); for (Object result : resultList) { Object[] row = (Object[]) result; Map<String, String> map = new HashMap<>(); String key = String.valueOf(row[0]).trim().replaceAll("[{}]", ""); // 尝试用这种方式去掉大括号 String value = String.valueOf(row[1]).trim().replaceAll("[{}]", ""); map.put(key, value); demoNames.add(map); System.out.println(demoNames); } return demoNames; }
当前输出:
[{001=DEMO}, {002=APPLE}, {003=GOOGLE}, {004=ALAMANCE COUNTY}]
期望输出:
[{001=DEMO, 002=APPLE, 003=GOOGLE, 004=ALAMANCE COUNTY}]
解决方案
问题出在你每次循环都新建了一个HashMap,然后把这个只有单个键值对的Map加到List里,自然会出现多个带大括号的元素。
只需要把Map的创建移到循环外面,让所有键值对都放到同一个Map里,最后再把这个Map加到List中就行:
public List<Map<String, String>> getDemoNames() { List<Map<String, String>> demoNames = new ArrayList<>(); // 把Map初始化移到循环外,只创建一次 Map<String, String> map = new HashMap<>(); for (Object result : resultList) { Object[] row = (Object[]) result; String key = String.valueOf(row[0]).trim().replaceAll("[{}]", ""); String value = String.valueOf(row[1]).trim().replaceAll("[{}]", ""); map.put(key, value); } // 循环结束后,把包含所有键值对的Map加到List里 demoNames.add(map); System.out.println(demoNames); return demoNames; }
这样修改后,所有键值对都会被放入同一个Map中,最终输出就会是你想要的格式——一个包含所有键值对的Map被包裹在数组括号里。
内容的提问来源于stack exchange,提问作者Testilla
相关产品推荐
相关产品推荐

