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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 02:33:19