今天看到了StringJoiner这个类,好奇之下就去搜了一下:
java8 中新出现了一个对字符串操作的类 StringJoiner,是对StringBuilder的封装。
/**
* Adds a copy of the given {@code CharSequence} value as the next
* element of the {@code StringJoiner} value. If {@code newElement} is
* {@code null}, then {@code "null"} is added.
*
* @param newElement The element to add
* @return a reference to this {@code StringJoiner}
*/
public StringJoiner add(CharSequence newElement) {
prepareBuilder().append(newElement);
return this;
}
private StringBuilder prepareBuilder() {
if (value != null) {
value.append(delimiter);
} else {
value = new StringBuilder().append(prefix);
}
return value;
}
再看下属性:
private final String prefix;//前缀
private final String delimiter;//分隔符
private final String suffix;//后缀
/*
* StringBuilder value -- at any time, the characters constructed from the
* prefix, the added element separated by the delimiter, but without the
* suffix, so that we can more easily add elements without having to jigger
* the suffix each time.
*/
private StringBuilder value;
/*
* By default, the string consisting of prefix+suffix, returned by
* toString(), or properties of value, when no elements have yet been added,
* i.e. when it is empty. This may be overridden by the user to be some
* other value including the empty String.
*/
private String emptyValue;
直接上测试示例:
StringJoiner sj = new StringJoiner(",");
sj.add("a").add("b").add("c");
System.out.println(sj);
输出结果:a,b,c
StringJoiner sj = new StringJoiner(",","[","]");
sj.add("a").add("b").add("c");
System.out.println(sj);
输出结果:[a,b,c]
方法也少,一看就能明白
代码简单,上手容易,谁用谁知道!哈哈!