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

Java---StringJoiner 的使用

在Java中,StringJoiner 是 专门用于高效拼接多个字符串,支持自定义分隔符、前缀和后缀。它简化了传统 StringBuilder 或字符串拼接操作中需要手动处理分隔符的复杂性,尤其在处理集合或流数据时非常实用。它简化了集合元素拼接、日志格式化等场景的代码。


StringJoiner 的核心功能

  1. 分隔符(Delimiter):元素之间的分隔符(如逗号、空格)。
  2. 前缀(Prefix):拼接结果的开头部分(如 [)。
  3. 后缀(Suffix):拼接结果的结尾部分(如 ])。
  4. 空值处理:当没有添加元素时,可以设置默认输出。

构造函数

提供两种构造函数:用法大同小异,披一层外衣而已;

方法

说明

StringJoiner(String delimiter)

只指定分隔符

StringJoiner(String s, String t, String e)

指定分隔符、前缀和后缀

示例

// 用逗号和空格分隔元素,无前缀/后缀
StringJoiner joiner1 = new StringJoiner(", ");// 用逗号分隔,前缀为 "[", 后缀为 "]"
StringJoiner joiner2 = new StringJoiner(", ", "[", "]");

常用方法

方法

说明

add(CharSequence element)

添加元素

merge(StringJoiner other)

合并另一个 StringJoiner 的内容

toString()

变回字符串

length()

返回当前长度(包含前缀和后缀)

setEmptyValue(CharSequence emptyValue)

设置没有元素时的默认输出


使用示例

1. 基础拼接
StringJoiner joiner = new StringJoiner(", ", "[", "]");
joiner.add("Apple");
joiner.add("Banana");
joiner.add("Cherry");System.out.println(joiner.toString()); // 输出: [Apple, Banana, Cherry]StringJoiner sj = new StringJoiner(", ", "Names: ", " (end)");
sj.add("Alice");
sj.add("Bob");
sj.add("Charlie");System.out.println(sj); // 输出: Names: Alice, Bob, Charlie (end)
2. 处理空值
StringJoiner sj = new StringJoiner("|");
sj.setEmptyValue("(No data)"); // 未添加元素时的默认值System.out.println(sj); // 输出: (No data)sj.add("Java");
System.out.println(sj); // 输出: Java
3. 合并多个 StringJoiner
StringJoiner joiner1 = new StringJoiner(", ", "[", "]");
joiner1.add("A").add("B");StringJoiner joiner2 = new StringJoiner("-", "{", "}");
joiner2.add("1").add("2");joiner1.merge(joiner2);
System.out.println(joiner1.toString()); // 输出: [A, B, 1-2]
4. 结合 Stream API 使用
List<String> cities = Arrays.asList("Beijing", "Shanghai", "Guangzhou");
String result = cities.stream().filter(s -> s.length() > 7).collect(Collectors.joining("; ", "{ ", " }"));System.out.println(result); // 输出: { Beijing; Shanghai; Guangzhou }

Collectors.joining() 是 Java 8 Stream API 提供的收集器,专为高效拼接流中元素设计。它底层使用 StringJoiner,支持自动添加分隔符、前缀和后缀,特别适合集合或流数据的字符串拼接场景。


注意事项

  1. 空元素处理add(null) 会拼接 "null" 字符串。
  2. 性能:底层使用 StringBuilder,性能高效。
  3. 线程安全:非线程安全(类似 StringBuilder)。
  4. 空值处理:默认空集合会显示前缀+后缀,可用 setEmptyValue 覆盖
  5. 元素中的分隔符:不会自动转义包含的分隔符字符
  6. 性能:适合已知元素数量的场景,超大数量数据建议用 StringBuilder

总结

StringJoiner 是处理复杂字符串拼接的理想工具,尤其适合以下场景:

  • 需要分隔符、前缀和后缀的格式化输出。
  • 结合集合或流(如 Collectors.joining())使用。
  • 避免手动处理分隔符逻辑(如避免末尾多余分隔符)。

通过灵活使用 StringJoiner,可以大幅提升代码可读性和简洁性。

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

相关文章:

  • C++11新特性:深入解析decltype关键字及其与auto的区别
  • AI Agent(8):安全与伦理考量
  • [题解]2023CCPC黑龙江省赛 - Folder
  • 警惕C#版本差异多线程中的foreach陷阱
  • 每日c/c++题 备战蓝桥杯(P2241 统计方形(数据加强版))
  • (四)YOLO_World-SAM-GraspNet的mujoco抓取仿真(操作记录)
  • C++STL——priority_queue
  • 运算符与表达式 -《Go语言实战指南》
  • IBM BAW(原BPM升级版)使用教程第八讲
  • 研发效率破局之道阅读总结(5)管理文化
  • 17.【.NET 8 实战--孢子记账--从单体到微服务--转向微服务】--微服务基础工具与技术--ELK
  • Springboot之会话技术
  • 关于web3
  • 初学者入门指南:什么是网络拓扑结构?
  • SRS流媒体服务器(4)源码分析之RTMP端口监听
  • Python+OpenCV实现手势识别与动作捕捉:技术解析与应用探索
  • ROS-关节轨迹(position、velocities/accelerations)绘图
  • 大模型微调算法原理:从通用到专用的桥梁
  • Linux系统管理与编程17:自动化部署ftp服务
  • 31.下一个排列
  • 慈缘基金会“蝴蝶飞”助西藏女孩白玛卓嘎“折翼重生”
  • FreeRTOS Semaphore信号量-笔记
  • 项目管理从专家到小白
  • Pale Moon:速度优化的Firefox定制浏览器
  • 棒球裁判员学习指南·棒球1号位
  • 【数据结构与算法】图的基本概念与遍历
  • 嵌入式硬件篇---麦克纳姆轮(简单运动实现)
  • Linux系统入门第十二章 --Shell编程之正则表达式
  • [架构之美]Windows系统安装MySQL 8.0详细图文教程(十八)
  • 论文精读:YOLOE: Real-Time Seeing Anything