当前位置: 首页 > news >正文

String.join()-高效字符串拼接

String.join-高效字符串拼接

    • 前言
    • 一、基础用法:拼接数组或集合元素(仅分隔符)
      • 语法
      • 示例 1:拼接字符串数组
      • 示例 2:拼接集合元素
      • 注意事项
    • 二、进阶用法:结合 Stream API 处理复杂场景
      • 示例 1:添加前缀和后缀(如数组格式)
      • 示例 2:处理空集合的默认值
    • 三、特殊场景:处理非字符串类型
    • 四、对比传统拼接方式
      • 传统方式(`StringBuilder`)
      • `String.join()` 优势
    • 五、注意事项
    • 总结:常用场景

前言

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 处理复杂场景

通过 Streamcollect(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() > 0) {sb.append(", "); // 手动添加分隔符}sb.append(fruit);
}
String result = sb.toString(); // 输出:Apple, Banana, Cherry

String.join() 优势

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

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

五、注意事项

  1. 空元素处理
  • 元素为 null 会报错,需提前过滤:
List<String> list = Arrays.asList("A", null, "B");
String result = list.stream().filter(Objects::nonNull) // 过滤null.collect(Collectors.joining(", ")); // 输出:A, B
  1. 分隔符为空
String result = String.join("", "Hello", "World"); // 输出:HelloWorld
  1. 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() 可以大幅简化字符串拼接逻辑,尤其在处理集合或需要统一分隔符的场景中效率显著。

若这篇内容帮到你,动动手指支持下!关注不迷路,干货持续输出!
ヾ(´∀ ˋ)ノヾ(´∀ ˋ)ノヾ(´∀ ˋ)ノヾ(´∀ ˋ)ノヾ(´∀ ˋ)ノ

http://www.xdnf.cn/news/593155.html

相关文章:

  • 重排序模型计算两个文本的分数
  • CentOS7挂载hgfs文件夹(VMware 共享文件夹)及网卡的自启动。
  • framework 编译技巧
  • 探索微分方程的领域及AI推理
  • 页面置换算法概述
  • WebView2 Win7下部分机器触屏失效的问题
  • electron 控制台打印中文乱码问题
  • Selenium自动化测试入门:cookie 处理
  • 甲骨文云服务器适合做网站吗
  • Intel oneAPI 入门
  • 一、web安全基础入门
  • 通过轻易云实现旺店通与金蝶云星空的退换管理对接
  • 碳计量新突破!安科瑞碳电表赋能企业绿色低碳转型
  • Oracle 创建外部表
  • 车载诊断数据 --- DiagnosticExtract AUTOSAR诊断数据库DEXT
  • BLIP3-o: 全开源多模态统一模型,先理解后生成,详细解读
  • 第六部分:第六节 - TypeScript 与 NestJS:打造类型安全的厨房管理流程
  • 3356. 零数组变换 II
  • Spring Boot 多租户架构实现:基于上下文自动传递的独立资源隔离方案
  • 为什么mosquitto 禁用了 topic “#“后,无法使用主题中包含%c client_id了?
  • python容器
  • PTA刷题笔记
  • 浏览器原生 Web Crypto API 实现 SHA256 Hash 加密
  • 六:操作系统虚拟内容之内存文件映射
  • DeepSeek的进阶应用场景大全
  • poppler_path 是用于 Python 库如 pdf2image 进行 PDF 转换时
  • 《告别单一智能:神经符号混合系统驱动推理能力的跨界融合》
  • 哈希表和容器中添加元素的方法
  • 什么是CDN(Content Delivery Network,内容分发网络)
  • ubunt配置本地源