Java 将 List 转换为 String常见方式

将 List 转换为 String的几种方式

  1. 使用 List的toString()方法将 List 转换为 String;结果前后会带有英文的中括号[],如:[1, 2, 3, 4, 5]
  2. 使用Java8 stream流中的Collections.joining()方法,带有逗号分隔符或自定义分隔符将集合转成String字符串
  3. 使用String.join()方法将带有逗号分隔符或自定义分隔符的集合转换为字符串
  4. 使用Apache commons包下的StringUtils.join()方法;转成的String结尾带有分隔符小尾巴,如:"张三,李四,"
  5. 使用 StringBuilder、StringBuffer的append方法自定义join()方法
第一种:List.toString方法

List.toString()产生的结果会在开头和结尾添加英文中括号,每个字符串用逗号分隔符分隔(分隔符不可更变)。如果我们想去掉方括号的话,需要借助String.replaceAll方法。

java 复制代码
/**
  * List的toString方法,结果前后会带有英文的中括号[],如:[1, 2, 3, 4, 5]
  */
public static void main(String[] args) {
   List<Integer> asList = Arrays.asList(1, 2, 3, 4, 5);
   
   String list2String = asList.toString();
   System.out.println(list2String);
   //使用replaceAll方法替换 中括号
   list2String = list2String.replaceAll("\\[|]", "");
   System.out.println(list2String);
}
第二种:Stream流转String

java8 stream中提供了Collectors.join()方法可用于将集合转成为具有指定分隔符、前缀和后缀的字符串。

java 复制代码
public class Demo2 {

    /**
     * List 转 String
     * stream流中的Collections.joining方法
     **/
    public static void main(String[] args) {
        List<String> list = Arrays.asList("张三", "李四", "王武", null, "麻子");
        //java stream流中的Collections.joining方法
        //指定分隔符
        String collect = list.stream().collect(Collectors.joining(","));
        //没有分隔符,直接拼接
        String collect1 = list.stream().collect(Collectors.joining());
        //指定分隔符,前缀,后缀
        String collect2 = list.stream().collect(Collectors.joining(",", "{", "}"));
        System.out.println(collect);//张三,李四,王武,null,麻子
        System.out.println(collect1);//张三李四王武null麻子
        System.out.println(collect2);//{张三,李四,王武,null,麻子}
    }
}
第三种:String.join()方法

java8 String添加了一个特殊的Join方法,用于将集合转换为指定分隔符连接的字符串。

java 复制代码
   /**
     * String.join()
     **/
    public static void main(String[] args) {
        List<String> list = Arrays.asList("张三", "李四", "王武", null, "麻子");
        String join = String.join(",", list);
        System.out.println(join);//张三,李四,王武,null,麻子
    }
第四种:StringUtils.join()方法

Apache commons包的外部库有一个方法StringUtils.join() 方法,它类似于 String.join() 方法,用于将集合转成指定分隔符链接的字符串;但是,如果集合中有null的话,会被转换成空串。

java 复制代码
   /**
     * StringUtils.join()
     **/
    public static void main(String[] args) {
        List<String> list = Arrays.asList("张三", "李四", "王武", null, "麻子");
        //StringUtils.join方法,集合中有null的话,会转成空串""
        String join = StringUtils.join(list, ",");
        System.out.println(join); //张三,李四,王武,,麻子
    }
第五种:自定义Join方法

java中提供了StringBuilder、StringBuffer两个类,可以使用他们提供的append方法自定义join方法,将集合转成字符串。

java 复制代码
   /**
     * StringBuilder、StringBuffer的append()方法
     **/
    public static void main(String[] args) {
        List<String> list = Arrays.asList("张三", "李四", "王武", null, "麻子");
        //3. StringBuilder、StringBuffer的append方法自定义join方法
        StringBuilder sb = new StringBuilder();
        for (String s : list) {
            sb.append(s).append(",");
        }
        //sb.insert(0, "join如下:");
        if (sb.length() > 1) {
            sb.deleteCharAt(sb.length() - 1);
        }
        System.out.println(sb.toString()); //张三,李四,王武,null,麻子
    }

逻辑如上,上面逻辑可以封账成一个通用的join方法

java 复制代码
public class Demo2 {

    public static class ListJoin<E> {

        public String join(String delimiter, Collection<? extends E> list) {
            Objects.requireNonNull(delimiter);
            Objects.requireNonNull(list);
            StringBuilder result = new StringBuilder();
            for (E obj : list) {
                //根据需要对空进行处理
                if (Objects.isNull(obj)) {
                    continue;
                }
                result.append(obj).append(delimiter);
            }
            if (result.length() > 1) {
                result.deleteCharAt(result.length() - 1);
            }

            return result.toString();
        }
    }

    /**
     * StringBuilder、StringBuffer的append()方法
     **/
    public static void main(String[] args) {
        List<String> list = Arrays.asList("张三", "李四", "王武", null, "麻子");
        //上述join方法可以修改成通用的join方法
        ListJoin<String> strDemo = new ListJoin<>();
        String join = strDemo.join(",", list);
        System.out.println(join); //张三,李四,王武,麻子

        ListJoin<Integer> intDemo = new ListJoin<>();
        List<Integer> asList = Arrays.asList(1, 2, 3, 4, 5);
        String intJoin = intDemo.join("-", asList);
        System.out.println(intJoin); //1-2-3-4-5
    }
}

以上方式都可以将List集合转成字符串,具体根据业务需要使用不同方式。

相关推荐
重生之我在20年代敲代码19 分钟前
strncpy函数的使用和模拟实现
c语言·开发语言·c++·经验分享·笔记
爱上语文20 分钟前
Springboot的三层架构
java·开发语言·spring boot·后端·spring
serve the people24 分钟前
springboot 单独新建一个文件实时写数据,当文件大于100M时按照日期时间做文件名进行归档
java·spring boot·后端
qmx_071 小时前
HTB-Jerry(tomcat war文件、msfvenom)
java·web安全·网络安全·tomcat
为风而战1 小时前
IIS+Ngnix+Tomcat 部署网站 用IIS实现反向代理
java·tomcat
编程零零七2 小时前
Python数据分析工具(三):pymssql的用法
开发语言·前端·数据库·python·oracle·数据分析·pymssql
技术无疆3 小时前
快速开发与维护:探索 AndroidAnnotations
android·java·android studio·android-studio·androidx·代码注入
2401_858286113 小时前
52.【C语言】 字符函数和字符串函数(strcat函数)
c语言·开发语言
铁松溜达py3 小时前
编译器/工具链环境:GCC vs LLVM/Clang,MSVCRT vs UCRT
开发语言·网络
everyStudy3 小时前
JavaScript如何判断输入的是空格
开发语言·javascript·ecmascript