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.mzph.cn/news/581565.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CMEMS数据下载

CMEMS最近在更新数据库&#xff0c;有一些数据库不能像之前一样在网页上下载了&#xff0c;但是CMEMS推荐了一个工具Copernicus Marine Toolbox&#xff0c;通过脚本进行下载。 环境&#xff1a;Ubuntu20.04 一、 Copernicus Marine Toolbox安装 &#xff08;原文为mamba或者py…

【标定】利用iphone基于python与opencv对手机相机做标定

利用iphone基于python与opencv对手机相机做标定 1. 标定步骤2. 标定代码3. 标定结果 之前基于ros实现了网络摄像机的标定&#xff0c;详细见 1. 标定步骤 &#xff08;1&#xff09;打印一张棋盘格A4纸张&#xff08;黑白间距已知&#xff09;&#xff0c;并贴在一个平板上。…

数字时代跨境电商营销大变革:海外网红营销的力量与影响

随着全球化的推进和数字技术的不断发展&#xff0c;跨境电商行业迎来了一场营销变革的浪潮。在这个过程中&#xff0c;一种新的营销方式崭露头角&#xff0c;那就是海外网红营销。海外网红以其独特的个人魅力和影响力&#xff0c;成为跨境电商推广的重要力量&#xff0c;为品牌…

Flink1.17实战教程(第五篇:状态管理)

系列文章目录 Flink1.17实战教程&#xff08;第一篇&#xff1a;概念、部署、架构&#xff09; Flink1.17实战教程&#xff08;第二篇&#xff1a;DataStream API&#xff09; Flink1.17实战教程&#xff08;第三篇&#xff1a;时间和窗口&#xff09; Flink1.17实战教程&…

设计模式(4)--对象行为(7)--观察者

1. 意图 定义对象间的一种一对多的依赖关系&#xff0c; 当一个对象的状态改变时&#xff0c;所有依赖于它的对象都得到通知并被自动更新。 2. 四种角色 抽象目标(Subject)、具体目标(Concrete Subject)、抽象观察者(Observer)、 具体观察者(Concrete Observer) 3. 优点 3.1 …

模型量化 | Pytorch的模型量化基础

官方网站&#xff1a;Quantization — PyTorch 2.1 documentation Practical Quantization in PyTorch | PyTorch 量化简介 量化是指执行计算和存储的技术 位宽低于浮点精度的张量。量化模型 在张量上执行部分或全部操作&#xff0c;精度降低&#xff0c;而不是 全精度&#xf…

RBE306TC Computer Vision Systems Lab Manuals and Reports

RBE306TC Computer Vision Systems Lab Manuals and Reports Lab 1 on Nov. 10th, 2023 Objectives : • Introducing the image processing capabilities of Matlab with Image Processing Toolbox • Learn to read and display images • Learn basic image processin…

HTML+CSS制作动漫绿巨人

🎀效果展示 🎀代码展示 <!DOCTYPE html> <html lang="en" > <head>

Apollo自动驾驶概述:引领智能交通的未来(文末赠送apollo周边)

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525; 个人专栏:《linux深造日志》《粉丝福利》 ⛺️生活的理想&#xff0c;就是为了理想的生活! ⛳️ 粉丝福利活动 ✅参与方式&#xff1a;通过连接报名观看课程&#xff0c;即可免费获取精美周边 ⛳️活动链接&#xf…

蓝桥杯宝藏排序2题目(快速,归并,桶排序)

快速排序 找一个基准值x(默认是第一个值)&#xff0c;把列表分成三部分:小于等于x的数字&#xff0c;x,大于x的数字左半部分和右半部分递归使用该策略 例: a【3,5,8,1,2,9,4,7,6】 找到基准值3,【1,2】3 【5,8,9,4,7,6】左半部分【1,2】作为一个子问题求解&#xff1b; 右半…

算法基础之最短编辑距离

最短编辑距离 核心思想 &#xff1a; 线性dp 集合定义 &#xff1a; f[i][j]为操作方式的最小值 集合计算 : 三种操作 取最小 ① 删除 : 将a[i]删掉 使ab相同 –> f[i-1][j] 1 f[i][j]② 增添 : 在a[i]后加上一个数 使ab相同 –> f[i][j-1] 1 f[i][j]③ 替换 : 将a[…

聚观早报 |一加Ace 3外观细节;小米14 Ultra电池曝光

聚观早报每日整理最值得关注的行业重点事件&#xff0c;帮助大家及时了解最新行业动态&#xff0c;每日读报&#xff0c;就读聚观365资讯简报。 整理丨Cutie 12月28日消息 一加Ace 3外观细节 小米14 Ultra电池曝光 Lucid正开发电动汽车 英特尔获以色列32亿美元补贴 新能…

用编程解决习题【计算机图像处理】

用编程解决习题【计算机图像处理】 前言版权第三章 03采样量化与像素间关系三种距离计算编程 第六章 06图像的直方图变换均衡化直方图编程规定化直方图编程 第七章 07图像的噪声抑制均值滤波 中值滤波计算编程knn滤波计算编程 第十章 10二值图像的分析贴标签 膨胀 腐蚀编程 最后…

Hadoop安装笔记_单机/伪分布式配置_Hadoop3.1.3——备赛笔记——2024全国职业院校技能大赛“大数据应用开发”赛项——任务2:离线数据处理

将下发的ds_db01.sql数据库文件放置mysql中 12、编写Scala代码&#xff0c;使用Spark将MySQL的ds_db01库中表user_info的全量数据抽取到Hive的ods库中表user_info。字段名称、类型不变&#xff0c;同时添加静态分区&#xff0c;分区字段为etl_date&#xff0c;类型为String&am…

代码审计必要性探讨

1、背景 为了保证代码的质量&#xff0c;需要一系列的流程来进行保证&#xff1a; 今天要探讨的是代码审计的必要性。 2、代码审计 代码审计的做法多种多样&#xff0c;我理解必须解决以下问题 &#xff0c;才可能有效&#xff1a; 核心&#xff1a;审计的本质是对比&#…

RabbitMQ 报错:Failed to declare queue(s):[QD, QA, QB]

实在没想到会犯这种低级错误。 回顾整理一下吧&#xff1a; 原因&#xff1a;SpringBoot主配置类默认只会扫描自己所在的包及其子包下面的组件。其他位置的配置不会被扫描。 如果非要使用其他位置&#xff0c;就需要在启动类上面指定新的扫描位置。注意新的扫描位置会覆盖默…

C# 运算符重载

C# 运算符重载 运算符重载运算符重载的实现1. 类中重载的方法必须是public公有的2. 类中定义的重载方法必须是静态的3. 在运算符前需要加上关键字 operator 使用如下可重载和不可重载运算符实例 运算符重载 一提到 - * / %这种类似的运算符都应该很清楚是什么&#xff0c;但是…

Unity网格篇Mesh(二)

Unity网格篇Mesh&#xff08;二&#xff09; 介绍4.生成额外的顶点数据未计算法线计算法线没有法线vs有法线错误的UV坐标Clamping vs warpping正确的UV纹理&#xff0c;平铺&#xff08;1,1&#xff09; vs 平铺&#xff08;2,1&#xff09;凹凸不平的表面&#xff0c;产生了金…

【Java 中锁的种类】

文章目录 一、公平锁和非公平锁二、可重入锁&#xff08;递归锁&#xff09;三、自旋锁四、独占锁(写锁)/共享锁(读锁)/互斥锁 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考 一、公平锁和非公平锁 遵守先来后到的是公平锁&#xff0c;不遵守的是非公…

Mybatis Java API - SqlSessionFactory

SqlSessionFactory​有六个用于创建 ​SqlSession​实例的方法。在选择其中一个方法时&#xff0c;通常会根据以下决策因素&#xff1a; 事务&#xff1a;您是否希望对SqlSession使用事务范围&#xff0c;或者使用自动提交&#xff08;在大多数数据库和/或JDBC驱动程序中通常意…