Java中String.join()高效字符串拼接的实现

 更新时间:2025年05月29日 10:23:50   作者:AA-代码批发V哥  
本文主要介绍了Java中String.join()高效字符串拼接的实现,包括基础拼接、StreamAPI结合、非字符串类型处理及与传统方式对比,具有一定的参考价值,感兴趣的可以了解一下

前言

String.join() 是 Java 8 引入的静态方法,用于将多个字符串通过指定分隔符合并成一个字符串。它简化了传统的字符串拼接逻辑,尤其适合处理集合或数组中的元素拼接。

一、基础用法:拼接数组或集合元素(仅分隔符)

语法

String.join(CharSequence delimiter, CharSequence... elements)
  • delimiter:分隔符(如 - 等)。

  • elements:待拼接的字符串数组或可变参数。

示例 1:拼接字符串数组

String[] fruits = {"Apple", "Banana", "Cherry"};
String result = String.join(", ", fruits);
System.out.println(result); // 输出:Apple, Banana, Cherry

示例 2:拼接集合元素

List<String> names = Arrays.asList("Alice", "Bob", "Charlie");
String result = String.join(" -> ", names);
System.out.println(result); // 输出:Alice -> Bob -> Charlie

注意事项

  • 若元素为 null,会抛出 NullPointerException

  • 若元素为空字符串(""),会保留空值(不同于过滤操作):

String[] arr = {"A", "", "B"};
String result = String.join("-", arr); // 输出:A--B

二、进阶用法:结合 Stream API 处理复杂场景

通过 Stream 的 collect(Collectors.joining()) 可添加前缀后缀,语法如下:

.collect(Collectors.joining(delimiter, prefix, suffix))
  • delimiter:元素间的分隔符(必填)。

  • prefix:结果前缀(可选)。

  • suffix:结果后缀(可选)。

示例 1:添加前缀和后缀(如数组格式)

List<String> list = Arrays.asList("One", "Two", "Three");
String result = list.stream()
    .collect(Collectors.joining(", ", "[", "]"));
System.out.println(result); // 输出:[One, Two, Three]

示例 2:处理空集合的默认值

List<String> emptyList = Collections.emptyList();
String result = emptyList.stream()
    .collect(Collectors.joining(", ", "Items: [", "]"));
System.out.println(result); // 输出:Items: [](空集合时保留前缀和后缀)

三、特殊场景:处理非字符串类型

若元素为非字符串(如数字、对象),需先转为字符串再拼接:

Integer[] numbers = {1, 2, 3, 4, 5};
String result = Arrays.stream(numbers)
    .map(String::valueOf) // 转换为字符串
    .collect(Collectors.joining(" | "));
System.out.println(result); // 输出:1 | 2 | 3 | 4 | 5

四、对比传统拼接方式

传统方式(StringBuilder)

StringBuilder sb = new StringBuilder();
for (String fruit : fruits) {
    if (sb.length() &gt; 0) {
        sb.append(", "); // 手动添加分隔符
    }
    sb.append(fruit);
}
String result = sb.toString(); // 输出:Apple, Banana, Cherry

String.join() 优势

  • 代码更简洁,无需手动处理分隔符逻辑。

  • 性能与 StringBuilder 相当,适合大多数场景。

五、注意事项

  • 空元素处理
  • 元素为 null 会报错,需提前过滤:
List<String> list = Arrays.asList("A", null, "B");
String result = list.stream()
    .filter(Objects::nonNull) // 过滤null
    .collect(Collectors.joining(", ")); // 输出:A, B
  • 分隔符为空
String result = String.join("", "Hello", "World"); // 输出:HelloWorld
  • 与 StringJoiner 的区别
  • String.join() 是静态方法,底层依赖 StringJoiner 实现。

  • StringJoiner 更灵活,可中途修改分隔符、前缀、后缀(如 setDelimiter())。

总结:常用场景

需求描述代码示例输出结果
简单拼接(逗号分隔)String.join(", ", "A", "B", "C")A, B, C
带前缀后缀Collectors.joining(", ", "List: [", "]")List: [A, B, C]
处理数字集合Arrays.stream(numbers).mapToObj(String::valueOf).collect(Collectors.joining("-"))1-2-3-4-5
空集合处理Collectors.joining(", ", "Empty: [", "]")(空集合)Empty: []

合理使用 String.join() 可以大幅简化字符串拼接逻辑,尤其在处理集合或需要统一分隔符的场景中效率显著。

到此这篇关于Java中String.join()高效字符串拼接的实现的文章就介绍到这了,更多相关Java String.join()字符串拼接内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:

相关文章

  • 搭建JavaWeb服务器步骤详解

    搭建JavaWeb服务器步骤详解

    本篇文章主要给大家详细分享了搭建JavaWeb服务器的详细步骤以及用到的代码,对此有需要的朋友可以跟着学习下。
    2018-02-02
  • Mybatis-Plus的条件构造器QueryWrapper & UpdateWrapper示例详解

    Mybatis-Plus的条件构造器QueryWrapper & UpdateWrapper示例详解

    Mybatis-Plus的条件构造器QueryWrapper和UpdateWrapper为开发者提供了强大、灵活的条件构建工具,能够大大简化数据库操作的代码,通过本文的介绍,读者可以更加深入地理解这两个条件构造器的使用方法,并在实际项目中灵活应用,感兴趣的朋友跟随小编一起看看吧
    2024-01-01
  • java后台如何利用Pattern提取所需字符详解

    java后台如何利用Pattern提取所需字符详解

    这篇文章主要给大家介绍了关于java后台如何利用Pattern提取所需字符的相关资料,文中通过实例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2022-01-01
  • Java经典面试题汇总:Spring

    Java经典面试题汇总:Spring

    本篇总结的是Spring框架相关的面试题,后续会持续更新,希望我的分享可以帮助到正在备战面试的实习生或者已经工作的同行,如果发现错误还望大家多多包涵,不吝赐教,谢谢
    2021-07-07
  • Spring中基于Java的配置@Configuration和@Bean用法详解

    Spring中基于Java的配置@Configuration和@Bean用法详解

    这篇文章主要介绍了Spring中基于Java的配置@Configuration和@Bean用法详解,Spring中为了减少xml中配置,可以声明一个配置类(例如SpringConfig)来对bean进行配置。,需要的朋友可以参考下
    2019-06-06
  • Spring-cloud-eureka使用feign调用服务接口

    Spring-cloud-eureka使用feign调用服务接口

    这篇文章主要为大家详细介绍了Spring-cloud-eureka使用feign调用服务接口,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-04-04
  • 关于Java中try finally return语句的执行顺序浅析

    关于Java中try finally return语句的执行顺序浅析

    这篇文章主要介绍了关于Java中try finally return语句的执行顺序浅析,需要的朋友可以参考下
    2017-08-08
  • Spring Cloud Eureka 搭建 & 集群方式

    Spring Cloud Eureka 搭建 & 集群方式

    这篇文章主要介绍了Spring Cloud Eureka 搭建 & 集群方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-03-03
  • JavaScript中的closest方法示例详解

    JavaScript中的closest方法示例详解

    这篇文章主要介绍了JavaScript中closest方法的相关资料,closest()是JavaScript中的一个非常实用的 DOM 方法,用于查找与当前元素匹配的最近的祖先元素,它支持 CSS 选择器,可以应用于事件委托、动态内容处理等场景,需要的朋友可以参考下
    2025-02-02
  • 解决Java 部署Tomcat时使用jni和jna调用DLL文件的问题

    解决Java 部署Tomcat时使用jni和jna调用DLL文件的问题

    这篇文章主要介绍了解决Java 部署Tomcat时使用jni和jna调用DLL文件的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-11-11

最新评论