Java 把列表元素拼接字符串

摘要:使用 Java Collectors.joining等方法把List中的所有元素通过指定的分隔符拼接为字符串。

综述

  在项目开发中,经常遇到的一个问题就是要把一个集合转换成字符串,故在今天的分享中,我们将一起学习如何把列表中的所有元素连接成由指定分隔符分隔的字符串。本文使用的列表List如下:

List<Integer> integerList = Stream.of(1, 2, 3, 6, 7, 9).collect(Collectors.toList());

  这种定义List的方式采用的是Java 8 的Stream,所构建的list支持动态扩容。

使用For循环

  基于 for 循环拼接字符串是最常见的一个方法,示例如下:

    /**
     * 基于for 循环拼接字符串
     */
    public static String forMethod(List<Integer> list, String separator) {
        // 校验是否为空
        if (list.isEmpty()) {
            return "";
        }
        StringBuilder sb = new StringBuilder();
        for (int i = 0, len = list.size(); i < len; i++) {
            sb.append(list.get(i)).append(separator);
        }
        //去掉最后一个分隔符号
        return sb.substring(0, sb.length() - 1);
    }

StringUtils.join 函数

  使用封装好的类StringUtils时,需要导入相关的包org.apache.commons.lang3.StringUtils,它依赖 jar 包 commons-lang3。

public static String joinMethod(List<Integer> list, String separator) {
    return StringUtils.join(list, separator);
}

其源码实现如下:

public static String join(Iterable<?> iterable, String separator) {
    return iterable == null ? null : join(iterable.iterator(), separator);
}

  第一个参数iterable表示实现了此接口的集合对象,集合Collection、List、Set都是Iterable的实现类;Iterable接口是Java集合框架的顶级接口,实现此接口使集合对象可以通过迭代器遍历自身元素。

  第二个参数separator表示拼接集合元素的时候使用的分隔符,这样一来就省去很多中间转换的步骤,可以直接得到我们预期的字符串。

Collectors.joining(Function) 函数

  Stream下的Collectors.joining(Function):用于将元素连接之后返回字符串,同样可以自定义分隔符。

public static String joiningMethod(List<Integer> list, String separator) {
    return list.stream()
            .map(String::valueOf)
            .collect(Collectors.joining(separator));
}

  Stream的优秀之处就在于其可以同时处理其它业务逻辑,让代码逻辑更加的原汁原味、一气呵成。如果纯粹是拼接字符串的诉求,确实没有必要使用它,毕竟杀鸡焉用牛刀!但是我们可以在拼接字符串的同时,实现其它功能。让我们通过下面的示例来感受一下使用Stream进行字符串拼接的真正魅力吧!

public static String joiningPlusMethod(List<Integer> list, String separator) {
    return list.stream()
            .map(String::valueOf)
            .collect(Collectors.joining(separator, "[", "]"));
}

功能:结合Stream流操作,在拼接后的字符串前后添加中括号。彰明较著,其它函数无法直接实现这个需求。

Guava Joiner join 函数

  使用 Google Guava 中的 com.google.common.base.Joiner 类拼接成字符串。

public static String guavaJoinMethod(List<Integer> list, String separator) {
    return Joiner.on(separator).join(list);
}

  返回一个字符串。该字符串是通过把 list 的每个元素转换为字符串,然后把这些字符串连接起来,在两个元素之间插入 separator 字符串而生成的。

String.join 函数

public static String stringJoinMethod(List<String> list, String separator) {
    return String.join(separator, list);
}

  该函数只适用于字符串List,返回一个字符串。该字符串是通过把 list 的元素连接起来,在两个元素之间插入 separator 字符串而生成的。

  总的示例如下:

import org.apache.commons.lang3.StringUtils;
import java.util.stream.Collectors;
import java.util.stream.Stream;
import com.google.common.base.Joiner;
public static void main(String[] args) {

    String separator = "-";
    List<Integer> list = initList();
    String result = forMethod(list, separator);
    System.out.println("----- forMethod -----" + result);
    System.out.println("----- joinMethod -----" + joinMethod(list, separator));
    System.out.println("----- joiningPlusMethod 添加特殊符号-----" + joiningPlusMethod(list, delimiter));

    System.out.println("----- streamMapMethod -----" + joiningMethod(list, separator));
    System.out.println("----- guavaJoinMethod -----" + guavaJoinMethod(list, separator));

}

  执行后,控制台打印结果如下:

----- forMethod -----1-2-3-6-7-9
----- joinMethod -----1-2-3-6-7-9
----- streamMapMethod -----1-2-3-6-7-9
----- joiningPlusMethod 添加特殊符号-----[1-2-3-6-7-9]
----- guavaJoinMethod -----1-2-3-6-7-9

结束语

  大家如果对于本文介绍的内容有不理解的地方,请在评论区留言。如果碰到【相关】问题也可以在评论区留言,和诸位互动交流。三人行必有我师,一起进步。大家可随意尽情享用本文啦!

posted @   楼兰胡杨  阅读(6441)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
点击右上角即可分享
微信分享提示