本文已参与「新人创作礼」活动,一起开启掘金创作之路。 Java8的StringJoiner使用API解析: 闲话少许: 直接上图:
jdk1.8在 java.util包下新增StringJoiner 类。 所以在jdk1.8以下版本无法使用哈。
/**
* 构造方法1
* delimiter 分隔符
*/
public StringJoiner(CharSequence delimiter) {
// 实际调用的还是构造方法2, 前后缀默认""
this(delimiter, "", "");
}
/**
* 构造方法2
* delimiter 分隔符
* prefix 拼接前缀
* suffix 拼接后缀
*/
public StringJoiner(CharSequence delimiter,
CharSequence prefix,
CharSequence suffix) {
Objects.requireNonNull(prefix, "The prefix must not be null");
Objects.requireNonNull(delimiter, "The delimiter must not be null");
Objects.requireNonNull(suffix, "The suffix must not be null");
// make defensive copies of arguments
this.prefix = prefix.toString();
this.delimiter = delimiter.toString();
this.suffix = suffix.toString();
// ***从此处可以看到,如果不设置emptyValue,默认是前后缀拼接***
this.emptyValue = this.prefix + this.suffix;
}
如下代码在main方法中执行测试即可: 具体的方法说明也在如下代码中体现了。
StringJoiner stringJoiner = new StringJoiner(",", "pre", "suf");
// 将集合中的元素按照指定分隔符","拼接,无需判端是否是最后一个元素,比之StringBuilder好一些。
IntStream.range(1, 10).forEach(i -> stringJoiner.add(i + ""));
StringJoiner stringJoiner1 = new StringJoiner("/", "pre1", "suf1");
IntStream.range(10, 15).forEach(i -> stringJoiner1.add(i + ""));
// 前者.merge(后者):就是将后者当做一个整体元素拼接到前者的后面
// 且二者之间的分隔符用前者的分隔符, 且忽略后者的pre和suf
stringJoiner.merge(stringJoiner1);
// 一旦设置了emptyValue,则当真的拼接内容为空时,前后缀无效,输出emptyValue;
// 当不设置emptyValue且当真的拼接内容为空时时,输出前缀+后缀的字符串
// stringJoiner.setEmptyValue("abc");
stringJoiner.setEmptyValue("");
// 单独add一个元素, 拼接的元素置于末尾,但在suffix之前
stringJoiner.add("hehe");
// 长度指的是toString()后的字符串长度。
int length = stringJoiner.length();
System.out.println("长度为: " + length);
System.out.println("最后输出: " + stringJoiner.toString());
附:
END,别偷懒,去运行一下,浪费不了多少时间的。加油哦!!!