java的StringJoiner用法
StringJoiner
是 Java 8 引入的实用工具类(位于 java.util
包),专门用于构建由分隔符连接的字符串序列,并可添加前缀和后缀。它简化了集合类元素的拼接操作,是传统 StringBuilder
在分隔场景下的优雅替代方案。
核心特性
1. 分隔符(Delimiter)
自动在元素间插入指定分隔符(如逗号、冒号等),避免手动处理分隔符位置。
2. 前缀/后缀(Prefix/Suffix)
可为最终结果添加固定开头和结尾(如 [A,B,C]
中的方括号)。
3. 空值处理
默认跳过 null
和空元素,避免拼接无效内容。
基础用法
// 创建:指定分隔符(逗号)
StringJoiner joiner = new StringJoiner(", ");// 添加元素
joiner.add("Apple");
joiner.add("Banana");
joiner.add("Orange");System.out.println(joiner.toString());
// 输出: Apple, Banana, Orange
进阶用法(前缀+后缀)
// 创建:分隔符 + 前缀 + 后缀
StringJoiner joiner = new StringJoiner(" | ", // 分隔符"{ ", // 前缀" }" // 后缀
);joiner.add("Java");
joiner.add("Python");
joiner.add("C++");System.out.println(joiner.toString());
// 输出: { Java | Python | C++ }
实战优势 vs StringBuilder
传统方式(易出错)
StringBuilder sb = new StringBuilder();
for (String item : list) {if (sb.length() > 0) {sb.append(", "); // 需手动判断分隔符}sb.append(item);
}
StringJoiner(简洁安全)
StringJoiner joiner = new StringJoiner(", ");
for (String item : list) {joiner.add(item); // 自动处理分隔符
}
底层原理
内部使用
StringBuilder
实现通过
add()
方法添加元素时,自动插入分隔符(首个元素除外)最终通过
toString()
生成带前缀/后缀的完整字符串
适用场景
集合转字符串(如
List<String>
→"A,B,C"
)日志拼接(如本文的
setSummary
案例)生成 CSV/SQL 等格式数据
构建带格式的配置字符串
注意:在 Java 8+ 的 Stream API 中,
Collectors.joining()
底层即使用StringJoiner
,例如:
list.stream().collect(Collectors.joining(", "))
总结
StringJoiner
通过封装分隔符逻辑,解决了以下痛点:
消除手动处理分隔符的边界条件
避免开头/结尾多余分隔符
简化代码结构(减少 30%-50% 的样板代码)
提升可读性和可维护性
在需要拼接带分隔符的字符串时,应优先选择 StringJoiner
而非手动拼接。