Collectors.joining()是Stream API中用于字符串拼接的收集器,支持无分隔符、带分隔符、带前缀和后缀三种形式;空流返回空字符串,含null元素会抛NPE,内部使用StringBuilder高效实现。

Java Stream API 的 joining 是 Collectors 提供的专门用于拼接字符串流的工具,本质是把 Stream 收集为一个完整字符串,支持无分隔符、带分隔符、甚至带前缀和后缀的拼接。
基础用法:无分隔符拼接
最简形式直接调用 Collectors.joining(),所有字符串首尾相连,中间不留空格或符号:
List<string> words = Arrays.asList("Hello", "World", "Java");
String result = words.stream()
.collect(Collectors.joining()); // 输出 "HelloWorldJava"
</string>
指定分隔符(最常用)
传入一个字符串作为分隔符,比如逗号、空格或换行符:
String joined = words.stream()
.collect(Collectors.joining(", ")); // 输出 "Hello, World, Java"
String lines = words.stream()
.collect(Collectors.joining("\n")); // 每个字符串占一行
带前缀和后缀的拼接
三个参数版本:分隔符 + 前缀 + 后缀。适合生成 JSON 数组、SQL IN 列表等结构化文本:
String inClause = words.stream()
.collect(Collectors.joining(",", "(", ")"));
// 输出 "(Hello,World,Java)"
String jsonArr = words.stream()
.collect(Collectors.joining(",", "[", "]"));
// 输出 "[Hello,World,Java]"
注意事项与常见问题
空流安全:如果 Stream 为空,joining 返回空字符串(不是 null),无需额外判空。
null 元素会抛异常:Stream 中若含 null 字符串,收集时会触发 NullPointerException。建议提前过滤:
.filter(Objects::nonNull)- 或用
map(s -> s == null ? "" : s)替换 null
性能提示:对大数据量,joining 内部使用 StringBuilder,效率优于手动循环 + +=。
大量免费API接口:立即使用
涵盖生活服务API、金融科技API、企业工商API、等相关的API接口服务。免费API接口可安全、合规地连接上下游,为数据API应用能力赋能!











