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

如何换行打印单个键关联的值?移除ArrayList输出的[]

解决方案

看起来你是在处理Java嵌套集合的打印问题,默认的ArrayList toString()方法确实会输出带[]的格式,刚好我之前也碰到过类似需求,给你两种靠谱的处理方式:

方式一:直接操作原始集合(推荐)

这是最稳妥的方式,直接从数据源入手,避免字符串解析的脆弱性。假设你的数据结构是Map<String, List<String>>(键是州名,值是对应城市列表),或者是嵌套在顶级键India下的子Map,具体代码如下:

情况1:直接是州-城市的Map

import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;

public class PrintStateCities {
    public static void main(String[] args) {
        // 模拟你的数据结构
        Map<String, List<String>> stateCitiesMap = new HashMap<>();
        stateCitiesMap.put("Karnataka", Arrays.asList("Belgaum", "Bangalore"));
        stateCitiesMap.put("Maharashtra", Arrays.asList("Pune", "Mumbai"));

        // 自定义打印逻辑,跳过默认的ArrayList格式
        for (Map.Entry<String, List<String>> entry : stateCitiesMap.entrySet()) {
            String state = entry.getKey();
            // 提取值列表的第一个城市
            String firstCity = entry.getValue().get(0);
            // 按期望格式换行打印
            System.out.println(state + " " + firstCity);
        }
    }
}

运行后输出就是:

Karnataka Belgaum
Maharashtra Pune

情况2:数据嵌套在India顶级键下

如果你的数据是嵌套结构(比如Map<String, Map<String, List<String>>>,顶级键是India,对应的值是州-城市Map),只需要多一步获取子Map:

import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;

public class PrintCountryStateCities {
    public static void main(String[] args) {
        // 模拟嵌套数据结构
        Map<String, Map<String, List<String>>> countryStateMap = new HashMap<>();
        Map<String, List<String>> stateCitiesMap = new HashMap<>();
        stateCitiesMap.put("Karnataka", Arrays.asList("Belgaum", "Bangalore"));
        stateCitiesMap.put("Maharashtra", Arrays.asList("Pune", "Mumbai"));
        countryStateMap.put("India", stateCitiesMap);

        // 先获取India对应的州-城市Map
        Map<String, List<String>> targetMap = countryStateMap.get("India");
        // 后续打印逻辑和上面一致
        for (Map.Entry<String, List<String>> entry : targetMap.entrySet()) {
            String state = entry.getKey();
            String firstCity = entry.getValue().get(0);
            System.out.println(state + " " + firstCity);
        }
    }
}

方式二:处理已生成的输出字符串(不推荐,仅应急用)

如果你只能拿到已生成的带[]的字符串(比如"[India] Karnataka [Belgaum, Bangalore] Maharashtra [Pune, Mumbai]"),可以用字符串替换和分割来处理,但这种方式对格式变化很敏感,尽量不用:

public class CleanOutputString {
    public static void main(String[] args) {
        String originalOutput = "[India] Karnataka [Belgaum, Bangalore] Maharashtra [Pune, Mumbai]";
        // 第一步:移除所有[]符号
        String cleanedStr = originalOutput.replaceAll("\\[|\\]", "");
        // 第二步:按空格分割成数组
        String[] parts = cleanedStr.split("\\s+");
        
        // 遍历提取需要的内容:跳过第一个元素(India),每两个元素一组(州名+第一个城市)
        for (int i = 1; i < parts.length; i += 2) {
            String state = parts[i];
            // 去掉城市名里的逗号
            String city = parts[i+1].replace(",", "");
            System.out.println(state + " " + city);
        }
    }
}

补充说明

你看到的[]是因为Java中ArrayList的默认toString()方法会用[]包裹元素、逗号分隔元素。只要我们不直接打印集合,而是手动提取元素并拼接成想要的格式,就能轻松去掉这些符号,实现期望的换行输出。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 07:45:40