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

Java如何在字符串赋值时格式化List为单引号逗号分隔格式

问题描述

下方代码示例定义了一个Test类,预期按如下格式打印列表内容:
'A','B','C'(注意元素两侧的单引号)。
需要确认是否存在可直接在String赋值环节使用的方法,实现上述格式化效果。

原示例代码:

public class TEST {
    public static void main(String[] args) {

        List<String> test = new ArrayList<>();
        test.add("A");
        test.add("B");
        test.add("C");

        System.out.println(test);

        System.out.println("Expected: 'A','B','C'"); // 目标输出

    }
}

当前代码运行输出:

[A, B, C]
Expected: 'A','B','C'

实现方法

直接打印列表得到[A, B, C]是因为ArrayList默认的toString()实现会给整体套方括号、元素用「逗号+空格」分隔,不会给单个元素加单引号,达不到要求。

可以直接在字符串赋值环节用JDK 8及以上原生支持的Stream API完成格式化,不需要引入任何第三方依赖,代码如下:

import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;

public class TEST {
    public static void main(String[] args) {

        List<String> test = new ArrayList<>();
        test.add("A");
        test.add("B");
        test.add("C");

        // 赋值环节直接完成格式化,拿到的结果就是目标格式
        String formattedStr = test.stream()
                .map(item -> "'" + item + "'")
                .collect(Collectors.joining(","));
        
        System.out.println(formattedStr);
        System.out.println("Expected: 'A','B','C'");
    }
}

运行后输出:

'A','B','C'
Expected: 'A','B','C'

补充说明

  • 如果列表中可能存在null元素,可以在map环节做空值处理,避免出现非预期的'null'输出:
    .map(item -> "'" + Objects.toString(item, "") + "'")
    
    用这个写法需要额外导入java.util.Objects包。
  • 如果项目中已经引入Apache Commons Lang3等常用工具包,也可以用StringUtils.wrap配合拼接的方式实现,但本质和上面的原生写法逻辑一致,没有必要为了这个场景单独引入第三方依赖。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 11:54:22