Java中如何使用Collectors.joining拼接字符串

Collectors.joining用于将流中元素拼接为字符串,支持无分隔符、指定分隔符、前缀和后缀的拼接方式,适用于如用户姓名带引号输出等实际场景。

在Java中,Collectors.joiningjava.util.stream.Collectors 类提供的一个静态方法,用于将流(Stream)中的元素拼接成一个字符串。它常用于处理集合中的字符串拼接操作,使用起来简洁高效。

基本用法:简单拼接

使用 Collectors.joining() 可以将字符串流中的元素连接成一个字符串,默认不加任何分隔符。

List names = Arrays.asList("Alice", "Bob", "Charlie");
String result = names.stream()
                     .collect(Collectors.joining());

// 输出: AliceBobCharlie
System.out.println(result);

使用分隔符

最常见的是传入一个字符串作为分隔符,比如逗号、空格等。

String result = names.stream()
                     .collect(Collectors.joining(", "));

// 输出: Alice, Bob, Charlie
System.out.println(result);



添加前缀和后缀

你还可以指定前缀和后缀,比如生成SQL中的 IN 条件或JSON数组风格的输出。

String result = names.stream()
                     .collect(Collectors.joining(", ", "[", "]"));

// 输出: [Alice, Bob, Charlie]
System.out.println(result);

实际应用场景示例

假设有一个用户对象列表,我们想把用户名拼接成带引号的字符串:

class User {
    String name;
    User(String name) { this.name = name; }
    String getName() { return name; }
}

List users = Arrays.asList(new User("Lisa"), new User("Tom"), new User("Jerry"));

String quotedNames = users.stream()
                          .map(User::getName)
                          .collect(Collectors.joining("\", \"", "\"", "\""));

// 输出: "Lisa", "Tom", "Jerry"
System.out.println(quotedNames);

基本上就这些。Collectors.joining 使用简单,适合大多数字符串拼接场景,尤其配合 Stream API 能写出清晰、函数式的代码。