String.join() 是 Java 8 引入的便捷字符串拼接方法,语法简洁、可读性强、线程安全,常用形式为 String.join(delimiter, elements) 或 String.join(delimiter, iterable)。
string.join() 是 java 8 引入的便捷方法,专为字符串拼接设计,无需手动遍历或借助 stringbuilder,语法简洁、可读性强、线程安全。
基本用法:传入分隔符和字符串数组或集合
最常用形式是 String.join(CharSequence delimiter, CharSequence... elements) 或 String.join(delimiter, Iterable extends CharSequence>)。
- 第一个参数是分隔符(可以是空字符串、空格、逗号等)
- 第二个参数支持可变参数(适合数组)或任意
Iterable(如 List、Set) - 元素为
CharSequence类型,包括 String、StringBuilder、CharBuffer 等,但 null 会抛出NullPointerException
示例:
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
String result = String.join(", ", arr); // → "apple, banana, cherry"
处理 List 或其他集合时更灵活
如果已有 List
String joined = String.join("-", list); // → "a-b-c"
- 支持任意实现了
Iterable的集合(ArrayList、LinkedList、HashSet 等) - 注意:HashSet 不保证顺序,拼接结果可能不固定
- 若需过滤 null 或空字符串,需提前处理(
String.join()本身不跳过 null)
常见注意事项与避坑点
- 任意一个元素为
null,运行时抛出NullPointerException;建议先用Objects.toString(obj, "")或流式过滤 - 分隔符本身可以是空字符串(
String.join("", arr)),等效于字符串拼接 - 性能良好:内部使用 StringBuilder 实现,比传统 for 循环 + += 更高效且不易出错
- 不支持自定义格式化(如每个元素加引号),此时应改用
Collectors.joining()配合 Stream
替代方案对比:什么情况下不用 join()?
- 需要对每个元素做转换(如加引号、转大写)→ 用
stream().map(...).collect(Collectors.joining(",")) - 拼接过程中可能有 null 值且不想中断 → 先用
list.stream().filter(Objects::nonNull).collect(...) - 旧版本 Java(StringUtils.join() 或手动 StringBuilder

















