Module java.base
Package java.util

Class StringJoiner

java.lang.Object
java.util.StringJoiner

public final class StringJoiner extends Object
StringJoiner 用于构造由分隔符分隔的字符序列,可选择以提供的前缀开头并以提供的后缀结尾。

在向 StringJoiner 添加内容之前,默认情况下,其 sj.toString() 方法将返回 prefix + suffix。但是,如果调用了 setEmptyValue 方法,则将返回提供的 emptyValue。例如,当使用集合符号创建字符串以表示空集时,即 "{}",其中 prefix"{"suffix"}",并且没有向 StringJoiner 添加任何内容时,可以使用此功能。

API 注意:

字符串 "[George:Sally:Fred]" 可以如下构造:

 
 StringJoiner sj = new StringJoiner(":", "[", "]");
 sj.add("George").add("Sally").add("Fred");
 String desiredString = sj.toString();
 

可以使用 StringJoinerStream 中使用 Collectors.joining(CharSequence) 创建格式化输出。例如:

 
 List<Integer> numbers = Arrays.asList(1, 2, 3, 4);
 String commaSeparatedNumbers = numbers.stream()
     .map(i -> i.toString())
     .collect(Collectors.joining(", "));
 
自 JDK 版本:
1.8
参见:
  • Constructor Summary

    Constructors
    Constructor
    Description
    构造一个空的 StringJoiner,没有字符,没有 prefixsuffix,并使用提供的 delimiter 的副本。
    StringJoiner(CharSequence delimiter, CharSequence prefix, CharSequence suffix)
    构造一个空的 StringJoiner,使用提供的 prefixdelimitersuffix 的副本。
  • Method Summary

    Modifier and Type
    Method
    Description
    add(CharSequence newElement)
    将给定的 CharSequence 值的副本作为 StringJoiner 值的下一个元素添加。
    int
    length()
    返回此 StringJoinerString 表示的长度。
    如果非空,则将给定的 StringJoiner 的内容(无前缀和后缀)作为下一个元素添加。
    设置用于确定此 StringJoiner 的字符串表示形式的字符序列,且尚未添加任何元素时(即为空)。
    返回当前值,包括 prefix,到目前为止使用 delimiter 分隔的值,以及 suffix,除非没有添加任何元素,在这种情况下,将返回 prefix + suffixemptyValue 字符。

    Methods declared in class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
  • Constructor Details

    • StringJoiner

      public StringJoiner(CharSequence delimiter)
      构造一个空的 StringJoiner,没有字符,没有 prefixsuffix,并使用提供的 delimiter 的副本。如果没有向 StringJoiner 添加字符,并调用访问其值的方法,则不会返回 prefixsuffix(或其属性)的结果,除非首先调用了 setEmptyValue
      参数:
      delimiter - 用于在添加到 StringJoiner 值时分隔每个元素的字符序列
      抛出:
      NullPointerException - 如果 delimiternull
    • StringJoiner

      public StringJoiner(CharSequence delimiter, CharSequence prefix, CharSequence suffix)
      构造一个空的 StringJoiner,使用提供的 prefixdelimitersuffix 的副本。如果没有向 StringJoiner 添加字符,并调用访问其字符串值的方法,则将返回结果为 prefix + suffix(或其属性)的结果,除非首先调用了 setEmptyValue
      参数:
      delimiter - 用于在添加到 StringJoiner 中的每个元素之间使用的字符序列
      prefix - 用于在开头使用的字符序列
      suffix - 用于在结尾使用的字符序列
      抛出:
      NullPointerException - 如果 prefixdelimitersuffixnull
  • Method Details

    • setEmptyValue

      public StringJoiner setEmptyValue(CharSequence emptyValue)
      设置用于确定此 StringJoiner 的字符串表示形式的字符序列,且尚未添加任何元素时(即为空)。为此目的制作 emptyValue 参数的副本。请注意,一旦调用了 add 方法,即使添加的元素对应于空的 StringStringJoiner 也不再被视为空。
      参数:
      emptyValue - 作为空的 StringJoiner 值返回的字符
      返回:
      返回此 StringJoiner 本身,以便可以链接调用
      抛出:
      NullPointerException - 当 emptyValue 参数为 null
    • toString

      public String toString()
      返回当前值,包括 prefix,到目前为止使用 delimiter 分隔的值,以及 suffix,除非没有添加任何元素,在这种情况下,将返回 prefix + suffixemptyValue 字符。
      覆盖:
      toString 在类 Object
      返回:
      StringJoiner 的字符串表示
    • add

      public StringJoiner add(CharSequence newElement)
      将给定的 CharSequence 值的副本作为 StringJoiner 值的下一个元素添加。如果 newElementnull,则添加 "null"
      参数:
      newElement - 要添加的元素
      返回:
      指向此 StringJoiner 的引用
    • merge

      public StringJoiner merge(StringJoiner other)
      如果非空,则将给定的 StringJoiner 的内容(无前缀和后缀)作为下一个元素添加。如果给定的 StringJoiner 为空,则调用不起作用。

      如果其他 StringJoiner 使用不同的分隔符,则来自其他 StringJoiner 的元素将使用该分隔符连接,并将结果作为单个元素附加到此 StringJoiner

      参数:
      other - 应合并其内容到此 StringJoinerStringJoiner
      返回:
      StringJoiner
      抛出:
      NullPointerException - 如果其他 StringJoiner 为 null
    • length

      public int length()
      返回此 StringJoinerString 表示的长度。请注意,如果没有调用 add 方法,则将返回 String 表示的长度(prefix + suffixemptyValue)。该值应等同于 toString().length()
      返回:
      StringJoiner 当前值的长度