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

Java中打印TreeMap<String,TreeSet<String>>如何去除输出内容的方括号

你之前的输出带方括号,是因为直接将TreeSet实例传入格式化方法时,会默认调用TreeSet的toString()方法,该方法的原生实现就是将元素用方括号包裹、逗号分隔拼接,以下是可选的实现方案:

实现方案
  • 方案1:使用JDK自带的String.join方法(推荐,Java 8及以上版本支持)
    这是最稳妥的原生解决方案,直接用指定分隔符拼接TreeSet的所有元素,不会受元素本身内容影响,无需引入额外依赖。
if (abbreviations.size() > 0) {
    abbreviations.forEach((x, y) -> {
        // 用", "作为分隔符拼接TreeSet中的所有字符串元素
        String setContent = String.join(", ", y);
        System.out.println(String.format("%-7s   : %-100s ", x, setContent));
    });
}
  • 方案2:遍历TreeSet手动拼接(适配Java 8以下低版本)
    如果使用的Java版本不支持String.join,可以通过遍历手动拼接内容:
if (abbreviations.size() > 0) {
    abbreviations.forEach((x, y) -> {
        StringBuilder sb = new StringBuilder();
        for (String item : y) {
            if (sb.length() > 0) {
                sb.append(", ");
            }
            sb.append(item);
        }
        System.out.println(String.format("%-7s   : %-100s ", x, sb.toString()));
    });
}
  • 方案3:替换toString结果的方括号(仅适合临时调试场景,不推荐)
    直接处理TreeSet默认toString输出的首尾方括号,写法简单但存在隐患:如果TreeSet的元素本身包含[或]字符会被错误替换。
if (abbreviations.size() > 0) {
    abbreviations.forEach((x, y) -> {
        // 正则匹配移除首尾的方括号
        String setContent = y.toString().replaceAll("^\\[|\\]$", "");
        System.out.println(String.format("%-7s   : %-100s ", x, setContent));
    });
}
  • 方案4:使用第三方工具类拼接(需引入对应依赖)
    如果项目已经引入Apache Commons Lang库,可直接使用StringUtils.join方法实现拼接:
if (abbreviations.size() > 0) {
    abbreviations.forEach((x, y) -> {
        String setContent = StringUtils.join(y, ", ");
        System.out.println(String.format("%-7s   : %-100s ", x, setContent));
    });
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 09:45:04