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
相关产品推荐
相关产品推荐

