17370845950

如何使用Java中的StringJoiner拼接字符串
StringJoiner类用于灵活拼接字符串,支持自定义分隔符、前缀和后缀。1. 创建时指定分隔符、前缀和后缀,如new StringJoiner(",", "[", "]");2. 使用add()方法添加元素,支持链式调用;3. 未添加元素时默认返回前缀+后缀,可通过setEmptyValue()设置空值输出;4. 可与Stream结合,通过Collectors.joining()实现流式拼接,底层基于StringJoiner,语义清晰,适用于构建JSON、SQL等格式化字符串。

在Java 8中引入的StringJoiner类,提供了一种灵活且高效的方式来拼接字符串。它特别适合需要自定义分隔符、前缀和后缀的场景,比如构建JSON数组、SQL语句或带格式的输出。

创建StringJoiner实例

使用StringJoiner时,首先要指定元素之间的分隔符。你也可以额外指定前缀和后缀,比如括号或方括号。

new StringJoiner(分隔符, 前缀, 后缀)

例如,创建一个用逗号分隔,并用方括号包围的拼接器:

StringJoiner sj = new StringJoiner(",", "[", "]");

添加元素

通过add()方法可以逐个添加字符串元素,该方法返回this,支持链式调用。

sj.add("apple")
  .add("banana")
  .add("cherry");

此时sj.toString()的结果是:[apple,banana,cherry]

处理空值和默认输出

如果未添加任何元素,toString()会返回一个只包含前缀和后缀的字符串(如"[]")。你可以使用setEmptyValue()来设置空情况下的默认值。

StringJoiner emptySj = new StringJoiner(", ");
emptySj.setEmptyValue("空列表");
System.out.println(emptySj); // 输出:空列表

与Stream结合使用(Java 8+)

StringJoiner常用于Collectors.joining()背后实现。你可以在流中直接生成拼接结果。

List fruits = Arrays.asList("apple", "banana", "cherry");
String result = fruits.stream()
  .collect(Collectors.joining(", ", "[", "]"));

这将输出:[apple, banana, cherry],底层正是使用了StringJoiner。

基本上就这些。StringJoiner比简单的StringBuilder更语义化,尤其在需要分隔符和格式包装时更清晰易读。日常拼接多个字符串时,值得优先考虑。