17370845950

Java中如何将集合元素连接成一个字符串
使用String.join()可直接连接字符串集合,Java 8可用Stream API的collect(Collectors.joining())处理任意类型,StringBuilder适合高性能场景。

在Java中,将集合元素连接成一个字符串有多种方式,最常用的是使用 String.join()StringBuilder,Java 8 之后还可以使用 Stream API。以下是几种实用的方法。

使用 String.join()(适用于字符串集合)

注意:String.join() 只能用于字符串或字符序列集合。

如果你的集合是 Collection 类型,可以直接使用 String.join() 配合 String.join(CharSequence delimiter, Iterable extends CharSequence> elements) 方法:

示例:
List list = Arrays.asList("apple", "banana", "orange");
String result = String.join(", ", list);
System.out.println(result); // 输出:apple, banana, orange

使用 Stream API(推荐,支持任意类型)

通过 stream()Collectors.joining(),可以灵活处理任意类型的集合,并自定义分隔符、前缀和后缀。

示例:
List list = Arrays.asList("apple", "banana", "orange");
String result = list.stream().collect(Collectors.joining(", "));
System.out.println(result); // 输出:apple, banana, orange

如果集合中是对象或非字符串类型,可以先用 map() 转换:

List numbers = Arrays.asList(1, 2, 3, 4);
String result = numbers.stream()
  .map(String::valueOf)
  .collect(Collectors.joining(" | "));
System.out.println(result); // 输出:1 | 2 | 3 | 4

使用 StringBuilder(性能高,适合大集合)

当需要更高性能或在循环中拼接时,使用 StringBuilder 更加高效,尤其适用于大数据量场景。

示例:
List list = Arrays.asList("apple", "banana", "orange");
StringBuilder sb = new StringBuilder();
for (int i = 0; i   if (i > 0) sb.append(", ");
  sb.append(list.get(i));
}
String result = sb.toString();
System.out.println(result); // 输出:apple, banana, orange

也可以配合迭代器避免索引判断:

StringBuilder sb = new StringBuilder();
for (Iterator it = list.iterator(); it.hasNext();) {
  sb.append(it.next());
  if (it.hasNext()) sb.append(" - ");
}
System.out.println(sb.toString()); // 输出:apple - banana - orange

基本上就这些。根据集合类型和性能需求选择合适的方式。小数据用 String.join()Stream,大数据或频繁操作建议用 StringBuilder