1. StringJoiner 是什么?
StringJoiner 是 Java 8 引入的一个实用工具类,专门用于构建由分隔符分隔的字符序列。它位于 java.util 包下,设计初衷是为了简化字符串拼接操作,特别是在需要特定分隔符的场景下。
我第一次在实际项目中使用 StringJoiner 是在处理一个 CSV 文件导出的功能时。当时需要将多个用户信息字段用逗号连接起来,传统的 StringBuilder 方式代码显得冗长且容易出错。StringJoiner 的出现让这段代码变得异常简洁:
java复制StringJoiner joiner = new StringJoiner(",");
joiner.add("张三").add("28").add("工程师");
String result = joiner.toString(); // "张三,28,工程师"
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 核心功能解析
2.1 基础构造方法
StringJoiner 提供了两种主要的构造方法:
java复制// 仅指定分隔符
StringJoiner(CharSequence delimiter)
// 指定分隔符、前缀和后缀
StringJoiner(CharSequence delimiter,
CharSequence prefix,
CharSequence suffix)
在实际开发中,我发现第二个构造方法特别适合处理需要包裹内容的场景。比如生成 JSON 数组:
java复制StringJoiner joiner = new StringJoiner(",", "[", "]");
joiner.add("苹果").add("香蕉").add("橙子");
System.out.println(joiner); // 输出: [苹果,香蕉,橙子]
2.2 关键操作方法
StringJoiner 的核心方法非常简洁:
add(CharSequence element):添加新元素merge(StringJoiner other):合并另一个 StringJoinerlength():返回当前长度(包括前缀和后缀)setEmptyValue(CharSequence emptyValue):设置空值时的默认输出
提示:merge() 方法在实际处理批量数据时特别有用,可以分阶段构建字符串最后合并。
3. 性能与实现原理
3.1 底层实现分析
查看 StringJoiner 的源码可以发现,它内部实际上是基于 StringBuilder 实现的:
java复制public final class StringJoiner {
private final String prefix;
private final String delimiter;
private final String suffix;
private StringBuilder value;
private String emptyValue;
// ... 其他代码
}
这种设计带来了几个优势:
- 保持了 StringBuilder 的高效性
- 添加了更语义化的 API
- 内置处理了前缀、后缀和分隔符的逻辑
3.2 性能对比测试
我做过一个简单的性能测试,对比三种字符串拼接方式:
| 方式 | 10万次操作耗时(ms) | 代码简洁度 |
|---|---|---|
| StringBui |
