stringjoiner适合已知元素集合、需统一分隔符及前后缀的字符串拼接场景;不适合单次两字符串拼接或动态增删元素,构造函数参数顺序为分隔符、前缀、后缀,add添加元素,merge合并另一joiner内容。
StringJoiner 适合什么场景
当你要拼接一组字符串、中间加固定分隔符,且可能需要前缀和后缀(比如 [a, b, c] 这种格式),StringJoiner 比手动用 + 或 StringBuilder 更清晰安全。它不是为高频循环拼接设计的,也不适合动态插入/删除中间元素——那是 ArrayList + String.join() 的事。
- 适合:已知元素集合(如
List<string></string>)、需统一分隔符+包裹符号 - 不适合:单次拼接两个字符串(直接用
+更轻量) - 不适合:边遍历边决定是否加入某项(容易漏掉分隔符逻辑,用
Stream.collect(Collectors.joining())更稳)
构造函数参数顺序容易搞反
StringJoiner 的三个构造函数中,最常用的是 new StringJoiner(delimiter, prefix, suffix)。注意:参数顺序是「分隔符、前缀、后缀」,不是「前缀、分隔符、后缀」。写错会导致前缀被当成分隔符塞进中间,或者后缀根本不出现在结果里。
常见错误现象:new StringJoiner("[", ",", "]") → 拼出 [a,b,c]?错,实际是 a[b,c[(因为 "[" 被当成分隔符,"]" 是后缀但没元素时不会出现)
正确写法:new StringJoiner(",", "[", "]") → 空实例时输出 [];加了 "a"、"b" 后输出 [a,b]