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

java的StringJoiner用法

StringJoiner是 Java 8 引入的实用工具类(位于 java.util包),专门用于构建由分隔符连接的字符串序列,并可添加前缀后缀。它简化了集合类元素的拼接操作,是传统 StringBuilder在分隔场景下的优雅替代方案。


核心特性

1. 分隔符(Delimiter)

自动在元素间插入指定分隔符(如逗号、冒号等),避免手动处理分隔符位置。

2. 前缀/后缀(Prefix/Suffix)

可为最终结果添加固定开头和结尾(如 [A,B,C]中的方括号)。

3. 空值处理

默认跳过 null和空元素,避免拼接无效内容。


基础用法

// 创建:指定分隔符(逗号)
StringJoiner joiner = new StringJoiner(", ");// 添加元素
joiner.add("Apple");
joiner.add("Banana");
joiner.add("Orange");System.out.println(joiner.toString()); 
// 输出: Apple, Banana, Orange

进阶用法(前缀+后缀)​

// 创建:分隔符 + 前缀 + 后缀
StringJoiner joiner = new StringJoiner(" | ",          // 分隔符"{ ",           // 前缀" }"            // 后缀
);joiner.add("Java");
joiner.add("Python");
joiner.add("C++");System.out.println(joiner.toString()); 
// 输出: { Java | Python | C++ }

实战优势 vs StringBuilder

传统方式(易出错)
StringBuilder sb = new StringBuilder();
for (String item : list) {if (sb.length() > 0) {sb.append(", "); // 需手动判断分隔符}sb.append(item);
}
StringJoiner(简洁安全)
StringJoiner joiner = new StringJoiner(", ");
for (String item : list) {joiner.add(item); // 自动处理分隔符
}

底层原理

  • 内部使用 StringBuilder实现

  • 通过 add()方法添加元素时,自动插入分隔符(首个元素除外)

  • 最终通过 toString()生成带前缀/后缀的完整字符串


适用场景

  1. 集合转字符串(如 List<String>"A,B,C"

  2. 日志拼接(如本文的 setSummary案例)

  3. 生成 CSV/SQL 等格式数据

  4. 构建带格式的配置字符串

注意​:在 Java 8+ 的 Stream API 中,Collectors.joining()底层即使用 StringJoiner,例如:

list.stream().collect(Collectors.joining(", "))


总结

StringJoiner通过封装分隔符逻辑,解决了以下痛点:

  • 消除手动处理分隔符的边界条件

  • 避免开头/结尾多余分隔符

  • 简化代码结构(减少 30%-50% 的样板代码)

  • 提升可读性和可维护性

在需要拼接带分隔符的字符串时,应优先选择 StringJoiner而非手动拼接。

http://www.dtcms.com/a/474083.html

相关文章:

  • 作业、工时、工作中心的一些配置杂记
  • 陇南做网站网站网站建设的原则有哪些
  • 网站建设费用价格明细表有道云笔记 同步 wordpress
  • Uniapp微信小程序开发:微信小程序支付功能后台代码
  • 制作网站谁家做的好怎样搞网络营销
  • win7winlogon调试指南winlogon!SignalManagerResetSignal需要运行多少次
  • QT 中的元对象系统(六):connect函数详解
  • 扬州建设集团招聘信息网站电子商务网站开发 当当网
  • Java基于SpringBoot的智慧校园管理系统小程序【附源码、文档说明】
  • 建设工程 法律 网站黑彩网站建设需要什么东西
  • Sora 2 上手指南:多模态视频生成 + API 实战
  • 量子纠缠连接宇宙的神秘纽带
  • 如何制作ppt视频教程WordPress加速优化方案
  • LeetCode:652. 寻找重复的子树
  • IP白名单配置:使用/24子网掩码是否有效?
  • TVM在RISC-V芯片的异构加速
  • 中区网站建设深圳最好的公司排名
  • 用cmd命令修改适配器ip
  • C#中结构(Struct)
  • 长春市网站建设深圳建设工程交易服务网老网站
  • 做视频网站用什么云盘好手机网站打开很慢
  • 沈阳市网站建设企业网站费用估算
  • 构建AI智能体:六十一、信息论完全指南:从基础概念到在大模型中的实际应用
  • SLAM | 视觉SLAM中的退化问题:定义、成因、表现与解决方案
  • 【YOLO 模型进阶】(2)YOLO v1 超详解:从网络架构到优缺点剖析
  • 临近做网站wordpress邮件美化
  • 海外营销网站建设wordpress 站内通知
  • ESP32 VSCode开发环境配置
  • 全栈监控系统搭建:Prometheus+Grafana前后端埋点方案
  • PDF Arranger下载和安装教程(附安装包)