collectors.joining 是 java 8 stream api 中用于字符串拼接的收集器,支持仅分隔符、或分隔符加前后缀三种用法,空流返回空字符串,遇 null 元素抛 npe,内部基于 stringbuilder 高效实现。

Collectors.joining 是 Java 8 Stream API 中专门用于拼接字符串的收集器,用法简洁、高效,适合将流中的字符串元素合并为一个单一字符串。
基础用法:只传分隔符
最常见场景是用指定字符(如逗号、空格)连接所有字符串:
- 代码示例:List
list = Arrays.asList("a", "b", "c");
String result = list.stream().collect(Collectors.joining(",")); // 输出 "a,b,c" - 注意:如果流为空,结果是空字符串(不是 null)
进阶用法:添加前缀和后缀
支持在拼接结果前后加上固定内容,比如加方括号或引号:
- 语法:Collectors.joining(delimiter, prefix, suffix)
- 示例:list.stream().collect(Collectors.joining("-", "[", "]")) → 输出 "[a-b-c]"
- 前缀/后缀可为空字符串(""),但不能为 null
注意事项与常见问题
- 输入流中若含 null 元素,会抛出 NullPointerException;建议提前过滤或映射处理,例如:stream.map(Objects::toString).collect(...)
- 仅适用于 Stream
或能映射为 String 的流;对其他类型需先用 map 转换,如 stream.map(Object::toString) - 性能良好,内部使用 StringBuilder 实现,无需手动优化
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











