java.lang.Object
java.util.StringJoiner
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
从Stream
中使用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
ConstructorDescriptionStringJoiner
(CharSequence delimiter) 构造一个空的StringJoiner
,没有字符,没有prefix
或suffix
,并使用提供的delimiter
的副本。StringJoiner
(CharSequence delimiter, CharSequence prefix, CharSequence suffix) 构造一个空的StringJoiner
,使用提供的prefix
、delimiter
和suffix
的副本。 -
Method Summary
Modifier and TypeMethodDescriptionadd
(CharSequence newElement) 将给定的CharSequence
值的副本作为StringJoiner
值的下一个元素添加。int
length()
返回此StringJoiner
的String
表示的长度。merge
(StringJoiner other) 如果非空,则将给定的StringJoiner
的内容(无前缀和后缀)作为下一个元素添加。setEmptyValue
(CharSequence emptyValue) 设置用于确定此StringJoiner
的字符串表示形式的字符序列,且尚未添加任何元素时(即为空)。toString()
返回当前值,包括prefix
,到目前为止使用delimiter
分隔的值,以及suffix
,除非没有添加任何元素,在这种情况下,将返回prefix + suffix
或emptyValue
字符。
-
Constructor Details
-
StringJoiner
构造一个空的StringJoiner
,没有字符,没有prefix
或suffix
,并使用提供的delimiter
的副本。如果没有向StringJoiner
添加字符,并调用访问其值的方法,则不会返回prefix
或suffix
(或其属性)的结果,除非首先调用了setEmptyValue
。- 参数:
-
delimiter
- 用于在添加到StringJoiner
值时分隔每个元素的字符序列 - 抛出:
-
NullPointerException
- 如果delimiter
为null
-
StringJoiner
构造一个空的StringJoiner
,使用提供的prefix
、delimiter
和suffix
的副本。如果没有向StringJoiner
添加字符,并调用访问其字符串值的方法,则将返回结果为prefix + suffix
(或其属性)的结果,除非首先调用了setEmptyValue
。- 参数:
-
delimiter
- 用于在添加到StringJoiner
中的每个元素之间使用的字符序列 -
prefix
- 用于在开头使用的字符序列 -
suffix
- 用于在结尾使用的字符序列 - 抛出:
-
NullPointerException
- 如果prefix
、delimiter
或suffix
为null
-
-
Method Details
-
setEmptyValue
设置用于确定此StringJoiner
的字符串表示形式的字符序列,且尚未添加任何元素时(即为空)。为此目的制作emptyValue
参数的副本。请注意,一旦调用了 add 方法,即使添加的元素对应于空的String
,StringJoiner
也不再被视为空。- 参数:
-
emptyValue
- 作为空的StringJoiner
值返回的字符 - 返回:
-
返回此
StringJoiner
本身,以便可以链接调用 - 抛出:
-
NullPointerException
- 当emptyValue
参数为null
时
-
toString
返回当前值,包括prefix
,到目前为止使用delimiter
分隔的值,以及suffix
,除非没有添加任何元素,在这种情况下,将返回prefix + suffix
或emptyValue
字符。 -
add
将给定的CharSequence
值的副本作为StringJoiner
值的下一个元素添加。如果newElement
为null
,则添加"null"
。- 参数:
-
newElement
- 要添加的元素 - 返回:
-
指向此
StringJoiner
的引用
-
merge
如果非空,则将给定的StringJoiner
的内容(无前缀和后缀)作为下一个元素添加。如果给定的StringJoiner
为空,则调用不起作用。如果其他
StringJoiner
使用不同的分隔符,则来自其他StringJoiner
的元素将使用该分隔符连接,并将结果作为单个元素附加到此StringJoiner
。- 参数:
-
other
- 应合并其内容到此StringJoiner
的StringJoiner
- 返回:
-
此
StringJoiner
- 抛出:
-
NullPointerException
- 如果其他StringJoiner
为 null
-
length
public int length()返回此StringJoiner
的String
表示的长度。请注意,如果没有调用 add 方法,则将返回String
表示的长度(prefix + suffix
或emptyValue
)。该值应等同于toString().length()
。- 返回:
-
StringJoiner
当前值的长度
-