DevNotes-使用StringJoiner拼接字符串-《Java笔记》

admin 2025-10-19 03:04:02 编程 来源:ZONE.CI 全球网 0 阅读模式

Java StringJoiner

StringJoiner 基本使用

字面上理解就是用来拼接字符串的,一般需要分隔符进行拼接,如:

hello, guys, AAA

这种三段式由 “,” 分隔的字符串,在 Java 8 之前要使用 StringBuilder/ StringBuffer 进行拼接,如:

  1. StringBuilder sb = new StringBuilder();
  2. sb.append("hello");
  3. sb.append(",");
  4. sb.append("guys");
  5. sb.append(",");
  6. sb.append("AAA");
  7. String str = sb.toString();

都是相同的分隔符逗号,这样拼接显然过于傻瓜式,如果要拼接的字符串非常多,代码会十分难看,写完感觉要崩溃。然而 Java 8 之后有了 StringJoiner,这件事件就变得更简单,分隔符这种全部一次性交给 StringJoiner 即可。

StringJoiner 基本使用示例

  1. public static void main(String[] args) {
  2. StringJoiner stringJoiner = new StringJoiner(",");
  3. stringJoiner.add("hello");
  4. stringJoiner.add("guys");
  5. stringJoiner.add("AAA");
  6. System.out.println(stringJoiner.toString());
  7. }

输出:

hello,guys,AAA

可以看到,这样写十分的干净清爽,也省去了许多没有必要的分隔符拼接操作,代码更优雅、只是可读性没 StringBuilder 直接拼接那么直观。

StringJoiner 详细介绍

StringJoiner 的类结构图:image.png它的父类就是 Object,这些成员变量和方法都有什么用呢?

成员变量

  • prefix:拼接后的字符串前缀
  • delimiter:拼接时的字符串分隔符
  • suffix:拼接后的字符串后缀
  • value:拼接后的值
  • emptyValue:空值的情况,value为 null 时返回

    构造方法

    image.png提供了两个构造方法,一个必须带分隔符,另一个必须带分隔符、前缀、后缀,可以看了 emptyValue 默认为前缀+后缀组成。

    公开方法

  • setEmptyValue:设置空值

  • toString:转换成 String
  • add:添加字符串
  • merge:从另一个 StringJoiner 合并
  • length:长度(包括前缀后缀)

    流式 API

    重点看下 add 方法源码:image.png可以看到内部其实就是用的 StringBuilder 进行封装的,首次创建会先拼接前缀,后续先添加分隔符,再添加字符串。其实 String 底层也是用的 StringBuilder另外一点,add 方法就是返回 StringJoiner 本身,所以可以像 StringBuilder/ StringBuffer 一样进行流式处理。如上面的示例一行代码搞定:
    1. public static void main(String[] args) {
    2. StringJoiner stringJoiner = new StringJoiner(",").add("hello").add("guys").add("AAA");
    3. System.out.println(stringJoiner.toString());
    4. }

    前后缀拼接

    在示例中需要指定前后缀:
    1. public static void main(String[] args) {
    2. StringJoiner stringJoiner = new StringJoiner(",", "[", "]");
    3. stringJoiner.add("hello");
    4. stringJoiner.add("guys");
    5. stringJoiner.add("AAA");
    6. System.out.println(stringJoiner.toString());
    7. }
    输出:

    [hello,guys,AAA]

如上所示,前后都带中括号进行了包装。

空值处理

没有拼接任何字符串的几个空值处理场景。

输出空白字符串

  1. public static void main(String[] args) {
  2. StringJoiner stringJoiner = new StringJoiner(",");
  3. System.out.println(stringJoiner.toString());
  4. }

输出前后缀

  1. public static void main(String[] args) {
  2. StringJoiner stringJoiner = new StringJoiner(",", "[", "]");
  3. }

输出:

[]

输出指定字符串

通过 setEmptyValue 进行设置。

  1. public static void main(String[] args) {
  2. StringJoiner stringJoiner = new StringJoiner(",", "[", "]");
  3. stringJoiner.setEmptyValue("void");
  4. System.out.println(stringJoiner.toString());
  5. }

输出:

void

String.join()

String.join() 这是针对 StringJoiner 又封装了一层的 API,同样出自 Java 8,可以传入动态参数或者迭代器。

  • java.lang.String#join(java.lang.CharSequence, java.lang.CharSequence…)
  • java.lang.String#join(java.lang.CharSequence, java.lang.Iterable<? extends java.lang.CharSequence>)

源码如下:image.png看源码,这两个方法只能进行简单的拼接操作,不能添加前后缀、空值设置处理等。来个示例:

  1. public static void main(String[] args) {
  2. String str = String.join(",", "hello", "guys", "AAA");
  3. System.out.println(str);
  4. }

可以看到,简单处理这样使用更简便。

以太坊cppgolang区别 编程

以太坊cppgolang区别

以太坊是一种去中心化的开源平台,它采用智能合约技术,旨在构建和运行不受干扰的分布式应用程序。作为目前最受欢迎的区块链平台之一,以太坊提供了多种编程语言的支持,其
progolang 编程

progolang

Go语言(Golang)是由Google开发的一门静态类型编程语言。作为一名专业的Golang开发者,我深知这门语言的优势和特点。在本文中,我将介绍Golang
golangn个发送者 编程

golangn个发送者

Golang是一种开源的编程语言,由Google团队开发,旨在提高程序的并发性和简化软件开发过程。在Go语言中,有时需要向多个接收者发送信息。本文将介绍如何在G
golang技能图谱 编程

golang技能图谱

从互联网行业的快速发展到人工智能技术的日益成熟,各种编程语言也应运而生。而在这众多的编程语言中,Golang(即Go)作为一门强大且高效的开发语言备受关注。Go
评论:0   参与:  0