Java 8 - StringJoiner
2018年2月27日
Java 8 在 java.util 包中引入了新的工具类 StringJoiner,主要用于拼接带有指定分隔符的多个字符串,同时还可以指定前缀、后缀、默认值。
1 | List<String> mystring = new ArrayList<>(4); |
假设需要将上面的 String 数组中成员用逗号连接后输出,目标效果如下:1
Logan, Magneto, Rogue, Storm
使用 StringBuilder 方式
1 | StringBuilder builder = new StringBuilder(); |
为了不在字符串的结尾也带上括号,不得不在每次拼接对象时判断当前对象是否为最后一个,或者在拼接完成后将最后的逗号去掉。
使用 StringJoiner 方式
1 | StringJoiner joiner = new StringJoiner(", "); |
无论是代码的可读性还是代码长度,StringJoiner 都更胜一筹。
What’s more?
除了设置分隔符以外,还可以给拼接器设置前后缀,StringJoiner 的另一种构造函数:
1 | public StringJoiner(CharSequence delimiter, CharSequence prefix, CharSequence suffix) |
还可以为整个拼接器设置默认字符值,即当整个拼接器没有包含任何对象时,拼接器本身可以输出一个默认值,而不是输出空字符串或 Null:
1 | StringJoiner stringJoiner = new StringJoiner("-"); |
输出:1
[Default value]
带有合并方法,可以合并多个连接器,被合并的连接器贝当作整个对象添加进列表中,被合并对象的前后缀都被忽略:
1 | StringJoiner joiner1 = new StringJoiner(", ","[","]"); |
输出:1
2
3Joiner1:[Logan, Magneto, Rouge, Storm]
Joiner2:{Apple-Banana-Orange}
Joiner2 merge joiner1:{Apple-Banana-Orange-Logan, Magneto, Rouge, Storm}