当前位置: 首页 > news >正文

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方法。

/*** 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()方法可用于将集合转成为具有指定分隔符、前缀和后缀的字符串。

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方法,用于将集合转换为指定分隔符连接的字符串。

   /*** 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的话,会被转换成空串

   /*** 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方法,将集合转成字符串。

   /*** 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方法

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集合转成字符串,具体根据业务需要使用不同方式。

http://www.lryc.cn/news/271035.html

相关文章:

  • Redis(认识NoSQL,认识redis,安装redis,redis桌面客户端,redis常见命令,redis的Java客户端)
  • idea 出现Cannot resolve symbol ‘springframework‘解决方法
  • ubuntu22.04安装anacoda遇到的坑
  • window的OPen方法,弹窗的特征
  • DFS算法查找所有路径详解
  • 单片机的存储、堆栈与程序执行方式
  • Web3开发成本和主要特性
  • 【数学建模美赛M奖速成系列】Matplotlib绘图技巧(一)
  • 005、数据类型
  • 软考网络工程师考试大纲(2018年最新版)
  • 【数据结构】栈【详解】
  • CSS 纵向底部往上动画
  • 常用的 MySQL 可视化客户端
  • C#使用SyntaxTree获取.cs文件中的属性名和注释
  • 基于价值认同的需求侧电能共享分布式交易策略(matlab完全复现)
  • 门控循环单元(GRU)-多输入回归预测
  • 电池管理系统BMS中SOC算法通俗解析(二)
  • YOLOv5改进 | 2023主干篇 | 华为最新VanillaNet主干替换Backbone实现大幅度长点
  • 爬虫工作量由小到大的思维转变---<第三十三章 Scrapy Redis 23年8月5日后会遇到的bug)>
  • PostgreSQL | 概念 | 什么是OLTPOLAP?
  • 2023年成都市中等职业学校学生技能大赛“网络搭建及应用”赛项竞赛样卷
  • Angular进阶之六:Progressive rendering
  • 机器人中的数值优化之线性共轭梯度法
  • 嵌入式Linux C语言介绍
  • 基于Java电影院票票务系统
  • HarmonyOS应用开发实战—开箱即用的登录页面3【ArkTS】
  • Unity坦克大战开发全流程——1)需求分析
  • python练习2【题解///考点列出///错题改正】
  • 7.2 uvm_resource_db in UVM
  • 洛谷——P3879 [TJOI2010] 阅读理解(STL:hash+set,c++)