摘要:使用 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

结束语

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

Java 把列表元素拼接字符串的更多相关文章

  1. Java使用占位符拼接字符串

    大家知道,在C#编程中,可以用占位符来拼接字符串,用起来非常的方便. 特别是需要进行大量的参数拼接的时候,比如: Console.WriteLine(String.Format("该域名{0 ...

  2. Java使用占位符拼接字符串-String.format()的使用

    String domain = "www.ykmaiz.com"; int iVisit = 0; String info = String.format("该域名%s被 ...

  3. Python 拼接字符串的几种方式

    在学习Python(3x)的过程中,在拼接字符串的时候遇到了些问题,所以抽点时间整理一下Python 拼接字符串的几种方式. 方式1,使用加号(+)连接,使用加号连接各个变量或者元素必须是字符串类型( ...

  4. Python 将一个列表里面的元素拼接成一个字符串

    item1 = ["lowman", "isbusy"] item2 = ",".join(item1) # 根据实际需要使用相应的分隔符连 ...

  5. 为什么 Java 8 中不再需要 StringBuilder 拼接字符串

    为什么 Java 8 中不再需要 StringBuilder 拼接字符串 来源:codeceo 发布时间:2016-12-27 阅读次数:427 0   在Java开发者中,字符串的拼接占用资源高往往 ...

  6. Java实现微信菜单json字符串拼接

    Java实现微信菜单json字符串拼接 微信菜单拼接json字符串方法 >>>>>>>>>>>>>>>> ...

  7. Java循环中删除一个列表元素

    本文主要想讲述一下我对之前看到一篇文章的说法.假设跟你的想法有出入,欢迎留言.一起讨论. #3. 在循环中删除一个列表元素 考虑以下的代码.迭代过程中删除元素: ArrayList<String ...

  8. java以逗号为分割符拼接字符串的技巧

    java以逗号为分割符拼接字符串的技巧   答: 不用那么多if判断,让人思维混乱,直接到最后使用deleteCharAt方法去除最后一个逗号即可. 实现代码如下所示: StringBuffer sb ...

  9. Java 在使用@Select遇到的问题:拼接字符串将数组拼为了字符串

    Java再用@Select拼接sql语句时候, #{参数名}:是加引号的 ${参数名}:是不加引号的 例如: userIds为List或者数组,值为1,2,3,4,5 1.@Select(" ...

  10. java拼接字符串用StringBuilder

    StringBuilder builder = new StringBuilder(); String s1="abc"; for(int i=0;i<10000000;i+ ...

随机推荐

  1. Feedalyze - 让你听得见、听得清用户的反馈

    满足用户需求,解决用户问题,获得适当报酬是商业成功最为重要的因素.然而扪心自问,当您推出新产品后,您真的在听.听得见.听得清用户的反馈么? 当今信息传播迅猛,渠道繁多,优秀产品随口碑效应供不应求,劣质 ...

  2. SQL Server 2025 AI相关能力初探

    SQL Server 在2024年11月开始进行社区私有预览(链接),由于涉及AI能力,我也是第一时间申请了内侧资格,悲剧的是,直到2025年2月,才拿到预览版的测试资格-.-,此时已经是CTP1.3 ...

  3. vivo 大规模容器集群运维平台实践

    作者:来自 vivo 互联网服务器团队- Zhou Qi .Kong Manyu 容器平台已经成为支持应用运维和部署的重要基础设施,当前 vivo 内部容器平台共有20+生产集群,管理数万物理机节点, ...

  4. java如何实现对List集合进行分页

    对List集合进行分页: private <T> Page<T> listToPage(List<T> dataList, Integer pageSize, In ...

  5. [Qt基础-07 QSignalMapper]

    QSignalMapper 本文主要根据QT官方帮助文档以及日常使用,简单的介绍一下QSignalMapper的功能以及使用 文章目录 QSignalMapper 简介 使用方法 主要的函数 信号和槽 ...

  6. goland JetBrains编辑器:代码爆红找不到引用,但项目可运行

    前言 goland JetBrains 编辑器:代码爆红找不到引用,但项目可运行 解决 goland 缓存已满,需要清除缓存

  7. SpringBoot的yml文件报org.yaml.snakeyaml.scanner.ScannerException: mapping values are not allowed here in 'reader', line 11, column 16:

    报错内容如下: 报错代码如下: 1 spring: 2 cloud: 3 gateway: 4 routes: 5 - id: query_route 6 uri: https://baidu.org ...

  8. docker 中几个节点意外宕机 pxc 无法启动

    docker 意外宕机,PXC启动不了解决方法 由于 意外宕机 docker start pxc 节点后闪退,解决方法如下 从节点中找任意一个数据卷映射目录,修改参数 [root@izuf64gdeg ...

  9. Portainer安装配置

    什么是portainer 官网:https://www.portainer.io/ Portainer(基于 Go) 是一个轻量级的Web管理界面,可让您轻松管理 Docker 主机 或 Swarm ...

  10. 【Java】字符串常用操作

    字符的常用技巧 char c; 字母的顺序:c - 'A'.c - 'a' 字母大小写转换:c - 'a' + 'A'.c - 'A' + 'a' 数字字符转换为数字:c - '0' String.S ...