首页 > 编程语言 >Java 把列表元素拼接字符串

Java 把列表元素拼接字符串

时间:2023-04-15 12:44:13浏览次数:47  
标签:Java String join list 列表 拼接 separator 字符串 -----

摘要:使用 Java Collectors.joining方法把列表中的所有元素通过指定的分隔符连接字符串。

目录

综述

  在项目开发中,经常遇到的一个问题就是要把得到的一个集合转换成字符串,故在今天的分享中,我们将一起来学习如何把列表中的所有元素连接成由指定分隔符分隔的字符串。本文使用的列表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));
}

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);
}

  返回一个字符串。该字符串是通过把 arrayObject 的每个元素转换为字符串,然后把这些字符串连接起来,在两个元素之间插入 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("----- 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
----- guavaJoinMethod -----1-2-3-6-7-9

结束语

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

标签:Java,String,join,list,列表,拼接,separator,字符串,-----
From: https://www.cnblogs.com/east7/p/17320890.html

相关文章

  • Java基础知识点内部类之局部内部类和匿名内部类
    一:局部内部类1概述:将内部类定义在方法里面就叫做局部内部类。类似于方法里面的局部变量。2.注意点:外界无法直接使用,需要在方法内部创建对象并使用。3.该类可以直接访问外部类成员,也可以访问方法内的局部变量。publicclassOuter{publicstaticvoidshow(){......
  • java入门
    JDK:JavaDevelopmentKit(Java 集成开发工具)按应用平台划分:J2EE: Java2EnterpriseEdition 可扩展的企业级应用J2SE: Java2StandardEdition 用于工作丫和PC机的Java标准平台J2ME:Java2MicroEdition用于嵌入式消费电子平台按运行的操作系统划分:JDK分别有f......
  • 02_JAVA编写高质量的代码
    高质量代码不仅仅要做到运行正确,还应做到可读性强、易于维护,简洁高效。......
  • Java学习路线
    前期准备写代码的工具:菜鸟工具:https://c.runoob.com/compile/10想学好编程,别背代码,要多写,把这句话刻到脑子里。选视频和找资料的小技巧:多看评论区、多看隔壁评论区、不要看过期的视频。Java入门想要学好编程,一定要多敲代码!建议先跟着书上的例子敲一遍代码,然后试着自......
  • Python 利用正则表达式和filter函数 筛选序列(列表等)
    在 Python 中,序列类型包括字符串、列表、元组、集合和字典http://c.biancheng.net/view/4312.htmlPython内建的filter()函数用于过滤序列https://www.liaoxuefeng.com/wiki/1016959663602400/1017404530360000序列内逐个元素筛选filter并用list保存结果筛选的判断条件是re.match......
  • 放弃where 1 = 1,使用更优雅的SQL条件拼接
    列表接口,通常会有多个条件组合查询的业务场景。映射至mapper.xml中就需要写where1=1来拼接否则就会发生select*fromtablewhereandcolumn='value'的语法错误如今的IDEA中,如果你设置了SQL方言,就会警告你where1=1始终为true建议使用<where></where>标签来处理这......
  • Java连接RabbitMQ报错:An unexpected connection driver error occured(偶尔能连上)
    1、查看rabbitMq的状态。输入命令:rabbitmqctlstatus,发现没有报错,但是rabbit中的host是root,并不是ip地址,所以连接不上。 2、运行命令:echo【ip地址】root>>/etc/hosts。将RabbitMQ服务所在的IP地址添加到/etc/hosts中。 ......
  • python列表函数的基本使用
    一.列表简介序列是Python最常见的操作,是最经常使用的一种数据操作。列表是当前序列中使用最多的。序列中的每一个值对应的位置,称之为索引。通常情景下,第一个索引是位置为0,第二个索引位置为1...python中共有6个序列的内置类型,最常用的是列表和元组操作,其次是字典操作。Python中......
  • 最优二叉搜索树问题(Java)
    最优二叉搜索树问题(Java)1、前置介绍2、算法设计思路2.1最优二叉搜索树的结构2.2一个递归算法2.3计算最优二叉搜索树的期望搜索代价3、代码实现4、复杂度分析5、参考资料1、前置介绍设S={x1,x2,…,xn}是有序集,且x1<x2<…<xn,表示有序集S的二叉搜索树利用二叉树的结......
  • Java面向对象编程基础
    类与对象类和对象的区别和联系类是抽象的,概念的,代表一类事物,比如人类,猫类..,即它是数据类型.对象是具体的,实际的,代表一个具体事物,即是实例.类是对象的模板,对象是类的一个个体,对应一个实例对象在内存中存在形式!字符串本质上是一个引用类型,按照jvm的规则会把字符串放在方法区的......