模块 java.base
 java.util

类 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();
  

StringJoiner 可用于使用 Collectors.joining(CharSequence) Stream 创建格式化输出。例如:

 
 List<Integer> numbers = Arrays.asList(1, 2, 3, 4);
 String commaSeparatedNumbers = numbers.stream()
   .map(i -> i.toString())
   .collect(Collectors.joining(", "));
  
自从:
1.8
参见:
  • 构造方法总结

    构造方法
    构造方法
    描述
    构造一个 StringJoiner 其中没有字符,没有 prefixsuffix ,以及提供的 delimiter 的副本。
    StringJoiner(CharSequence delimiter, CharSequence prefix, CharSequence suffix)
    使用提供的 prefixdelimitersuffix 的副本构造一个其中没有字符的 StringJoiner
  • 方法总结

    修饰符和类型
    方法
    描述
    add(CharSequence newElement)
    添加给定 CharSequence 值的副本作为 StringJoiner 值的下一个元素。
    int
    返回此 StringJoinerString 表示的长度。
    添加给定 StringJoiner 的内容,如果它不为空,则不带前缀和后缀作为下一个元素。
    设置在确定此 StringJoiner 的字符串表示形式时要使用的字符序列,并且尚未添加任何元素,即当它为空时。
    返回当前值,由 prefix 组成,到目前为止添加的值由 delimitersuffix 分隔,除非没有添加任何元素,在这种情况下,将返回 prefix + suffixemptyValue 字符。

    在类 java.lang.Object 中声明的方法

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
  • 构造方法详细信息

    • StringJoiner

      public StringJoiner(CharSequence  delimiter)
      构造一个 StringJoiner 其中没有字符,没有 prefixsuffix ,以及提供的 delimiter 的副本。如果没有字符被添加到 StringJoiner 并且调用了访问它的值的方法,它不会在结果中返回 prefixsuffix (或其属性),除非 setEmptyValue 已经被首先调用。
      参数:
      delimiter - 添加到 StringJoiner 值的每个元素之间要使用的字符序列
      抛出:
      NullPointerException - 如果 delimiternull
    • StringJoiner

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

    • setEmptyValue

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

      public String  toString()
      返回当前值,由 prefix 组成,到目前为止添加的值由 delimitersuffix 分隔,除非没有添加任何元素,在这种情况下,将返回 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 为空,则调用无效。

      如果从未调用过 add() ,并且从未使用非空的 StringJoiner 参数调用过 merge(),则 StringJoiner 为空。

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

      参数:
      other - StringJoiner 其内容应该合并到这个
      返回:
      这个StringJoiner
      抛出:
      NullPointerException - 如果另一个 StringJoiner 为空
    • length

      public int length()
      返回此 StringJoinerString 表示的长度。请注意,如果未调用任何添加方法,则将返回 String 表示形式(prefix + suffixemptyValue )的长度。该值应等于 toString().length()
      返回:
      StringJoiner的当前值的长度