Java 将 List 转换为 String常见方式
将 List 转换为 String的几种方式
- 使用 List的toString()方法将 List 转换为 String;结果前后会带有英文的中括号[],如:[1, 2, 3, 4, 5]
- 使用Java8 stream流中的Collections.joining()方法,带有逗号分隔符或自定义分隔符将集合转成String字符串
- 使用String.join()方法将带有逗号分隔符或自定义分隔符的集合转换为字符串
- 使用Apache commons包下的StringUtils.join()方法;转成的String结尾带有分隔符小尾巴,如:"张三,李四,"
- 使用 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集合转成字符串,具体根据业务需要使用不同方式。
相关文章:

Java 将 List 转换为 String常见方式
将 List 转换为 String的几种方式 使用 List的toString()方法将 List 转换为 String;结果前后会带有英文的中括号[],如:[1, 2, 3, 4, 5]使用Java8 stream流中的Collections.joining()方法,带有逗号分隔符或自定义分隔符将集合转成…...

Redis(认识NoSQL,认识redis,安装redis,redis桌面客户端,redis常见命令,redis的Java客户端)
文章目录 Redis快速入门1.初识Redis1.1.认识NoSQL1.1.1.结构化与非结构化1.1.2.关联和非关联1.1.3.查询方式1.1.4.事务1.1.5.总结 1.2.认识Redis1.3.安装Redis1.3.1.依赖库1.3.2.上传安装包并解压1.3.3.启动1.3.4.默认启动1.3.5.指定配置启动1.3.6.开机自启 1.4.Redis桌面客户端…...

idea 出现Cannot resolve symbol ‘springframework‘解决方法
Maven手动重新加载 1)File–>Invalidate Caches / Restart… 清理缓存,重启idea客户端 2)File–>Maven–>Reload project重新从maven中加载工程依赖的组件...

ubuntu22.04安装anacoda遇到的坑
这几天把用了3年的windows10换成了ubuntu22.04 各种环境都得配置,本文记录下遇到的坑。 1、anacoda在ubuntu上也可以用官方也提供了安装包,但是没有图形界面,需要以命令行的方式安装和运行配置 1.1 安装:官网下载后,…...

window的OPen方法,弹窗的特征
文章目录 一、介绍二、弹窗的特征 一、介绍 window.open() 方法是 JavaScript 中的一个内置方法,用于在浏览器中打开一个新的窗口或标签页。 语法: window.open(url, name, features, replace)二、弹窗的特征 open方法参数说明: 参数说明url要载入窗…...

DFS算法查找所有路径详解
DFS算法查找所有路径详解 算法介绍 深度优先搜索(Depth-First Search,DFS)是一种图遍历算法,它从起始节点开始,沿着一条路径尽可能深入,直到达到最深的节点,然后回溯到前一节点,继…...

单片机的存储、堆栈与程序执行方式
一、单片机存储区域 如图所示位STM32F103ZET6的参数: 单片机的ROM(内部FLASH):512KB,用来存放程序代码的空间。 单片机的RAM:64KB,一般都被分配为堆、栈、变量等的空间。 二、堆和栈的概念 …...

Web3开发成本和主要特性
多年来,技术不断进步,可帮助您的业务领先于竞争对手。如今,您可以看到许多更新和变化,使技术更加先进,对企业更加有用。到现在为止,web1.2和2.0比较流行,但是要知道web 3才是技术之父࿰…...

【数学建模美赛M奖速成系列】Matplotlib绘图技巧(一)
Matplotlib图像基础 写在前面1 基本绘图实例:sin、cos函数图2 plot()函数详解**kwargs参数: 3 matplotlib中绘图的默认配置4 设置图的横纵坐标的上下界5 设置横纵坐标上的记号6 调整图像的脊柱7 添加图例8 给一些特殊点加注释9 子图最后 写在前面 前面我…...

005、数据类型
1. 关于数据类型 Rust中,每个值都有其特定的数据类型,Rust会根据数据的类型来决定如何处理它们。 Rust是一门静态类型语言,它在编译程序的过程中就需要知道所有变量的具体类型。在大部分情况下,编译器可以根据我们如何绑定、使用变…...

软考网络工程师考试大纲(2018年最新版)
本书是全国计算机专业技术资格考试办公室组织编写的网络工程师考试大纲,本书除大纲内容外,还包括了人力资源和社会保障部、工业和信息化部的有关文件以及考试简介。 网络工程师考试大纲是针对本考试的计算机网络中级资格制定的。通过本考试的考生,可被用人单位择优聘任为工…...

【数据结构】栈【详解】
目录 栈的定义: 栈的声明与定义: 头文件的包含: 对栈的基本操作: 栈的初始化: 摧毁栈: 入栈: 编辑 出栈: 编辑 输出栈顶位置: 输出栈的当前大小: 判空操…...

CSS 纵向底部往上动画
<template><div class"container" mouseenter"startAnimation" mouseleave"stopAnimation"><!-- 旋方块 --><div class"box" :class"{ scale-up-ver-bottom: isAnimating }"><!-- 元素内容 --&g…...

常用的 MySQL 可视化客户端
数据库可视化客户端(GUI)让用户在和数据库进行交互时,能直观地查看、创建和修改对象,如:表、行和列。让数据库操作变得更方便了。 今天,我们来了解下目前市场上最常用的 MySQL 可视化客户端。 官方&#x…...

C#使用SyntaxTree获取.cs文件中的属性名和注释
有时候,我们可能需要获取.cs文件中的属性和对应的注释来生成一些代码,比如SQL查询什么的。 但使用正则匹配有时候会不准确。搜索了下,发现微软提供了代码解析的API。 具体如下两个方法: /// <summary> /// 获取所有属性和…...

基于价值认同的需求侧电能共享分布式交易策略(matlab完全复现)
目录 1 主要内容 2 部分程序 3 程序结果 4 下载链接 1 主要内容 该程序完全复现《基于价值认同的需求侧电能共享分布式交易策略》,针对电能共享市场的交易机制进行研究,提出了基于价值认同的需求侧电能共享分布式交易策略,旨在降低电力市…...

门控循环单元(GRU)-多输入回归预测
目录 一、程序及算法内容介绍: 基本内容: 亮点与优势: 二、实际运行效果: 三、部分程序: 四、全部代码数据分享: 一、程序及算法内容介绍: 基本内容: 本代码基于Matlab平台编译…...

电池管理系统BMS中SOC算法通俗解析(二)
下面简单介绍下我们BMS保护板使用的SOC估算方法。我们算法的主要是针对电流积分法计算SOC的局限性进行改进: ●电池包第一次上电使用开路电压法估算SOC。第一次上电,根据电池包厂家给出的电压和剩余容量二维关系图大概估算出目前电池包的剩余容量即SOC。…...

YOLOv5改进 | 2023主干篇 | 华为最新VanillaNet主干替换Backbone实现大幅度长点
一、本文介绍 本文给大家来的改进机制是华为最新VanillaNet网络,其是今年最新推出的主干网络,VanillaNet是一种注重极简主义和效率的神经网络架构。它的设计简单,层数较少,避免了像深度架构和自注意力这样的复杂操作(需要注意的是…...

爬虫工作量由小到大的思维转变---<第三十三章 Scrapy Redis 23年8月5日后会遇到的bug)>
前言: 收到回复评论说,按照我之前文章写的: 爬虫工作量由小到大的思维转变---<第三十一章 Scrapy Redis 初启动/conn说明书)>-CSDN博客 在启动scrapy-redis后,往redis丢入url网址的时候遇到: TypeError: ExecutionEngine.crawl() got an unexpected …...

PostgreSQL | 概念 | 什么是OLTPOLAP?
什么是OLTP&OLAP? 大白话理解:业务系统都可以称作OLTP,基于业务系统产生的数据进行数据分析和决策的都可以称为OLAP。 OLTP OLTP( Online Transaction Processing)在线事务处理系统 用途: 用于支持日…...

2023年成都市中等职业学校学生技能大赛“网络搭建及应用”赛项竞赛样卷
2023年成都市中等职业学校学生技能大赛 “网络搭建及应用”赛项竞赛样卷 (总分1000分) 目录 2023年成都市中等职业学校学生技能大赛 “网络搭建及应用”赛项竞赛样卷 网络建设与调试项目(500分) 服务器搭建与运维项目(…...

Angular进阶之六:Progressive rendering
简介 Progressive Rendering 是一种提高 Web 应用性能的方法,允许页面在加载过程中逐步呈现,以提高用户体验。在本文中,我们将探讨如何在 Angular 中通过自定义指令实现 Progressive Rendering,特别是处理从服务器获取大量数据的…...

机器人中的数值优化之线性共轭梯度法
欢迎大家关注我的B站: 偷吃薯片的Zheng同学的个人空间-偷吃薯片的Zheng同学个人主页-哔哩哔哩视频 (bilibili.com) 本文ppt来自深蓝学院《机器人中的数值优化》 目录 1.无约束优化方法对比 2.Hessian-vec product 3.线性共轭梯度方法的步长编辑 4.共轭梯度…...

嵌入式Linux C语言介绍
目录 一.前言 二.C语言的特点 一.前言 开发工具通常依赖于操作系统提供的各种功能和服务。许多开发工具都基于操作系统的API(应用程序接口)进行开发,这些API提供了文件处理、网络通信、图形界面等核心功能。没有操作系统的支持,…...

基于Java电影院票票务系统
基于Java电影院票票务系统 功能需求 1、用户登录与注册:用户可以通过系统注册账号并登录系统,方便进行购票和管理个人信息。 2、个人信息管理:用户可以查看和修改个人信息,包括姓名、联系方式等。 3、影片信息查询:…...

HarmonyOS应用开发实战—开箱即用的登录页面3【ArkTS】
文章目录 一.HarmonyOS应用开发实战—开箱即用的登录页面2【ArkTS】【鸿蒙专栏-31】1.1 项目背景1.2 ArkTS详解二.HarmonyOS应用开发实战—开箱即用的登录页面3【ArkTS】2.1 ArkTS页面源码2.2 代码解析2.3 心得一.HarmonyOS应用开发实战—开箱即用的登录页面2【ArkTS】【鸿蒙专…...

Unity坦克大战开发全流程——1)需求分析
实践项目:需求分析 该游戏共有三个主要部分:UI、数据储存、核心游戏逻辑,下面我们将从开始场景、游戏场景、结束场景三个角度切入进行分析。...

python练习2【题解///考点列出///错题改正】
一、单选题 【文件】 *1.【单选题】 ——文件:读取方法 下列哪个选项可以从文件中读取任意字节的内容?(C )A A.read() B.readline() C.readlines() D.以上全部 A\B\C三种方法都是可以读取文件中任意的字节内容的࿰…...

7.2 uvm_resource_db in UVM
uvm_resource_db是一个类型参数化 type-parameterized的类,它是资源数据库顶部的一个方便层(convenience layer)。这个便利层简化了对低级数据库的访问,并且没有添加新功能。因此,uvm_resource_db不是从uvm_resource类派生的。以下uvm_resour…...