終于,Java 8在Java.util軟件包下發(fā)布了StringJoiner類。相對(duì)于我們使用StringBuffer / StringBuilder的舊式做法來連接字符串,這并非是一個(gè)迥然不同的實(shí)現(xiàn)。今天動(dòng)力節(jié)點(diǎn)的Java老師和大家一起來看一看StringJoiner的用法和它的內(nèi)部實(shí)現(xiàn)。
例如,兩個(gè)字符串為“Smart”和“Techie”,連接這些字符串為[Smart,Techie]。在這種情況下,前綴為“[”,后綴為“]”,以及分隔符為“,”。 StringJoiner有如下兩個(gè)構(gòu)造函數(shù)。
StringJoiner(CharSequence delimiter)
StringJoiner(CharSequence delimiter, CharSequence prefix, CharSequence suffix)
想要有前綴和后綴,因此在例子中使用第二個(gè)構(gòu)造函數(shù)。
StringJoiner sjr = new StringJoiner(",", "[", "]");
sjr.add("Smart").add("Techie");
System.out.println("The final Joined string is " + sjr);
如果不希望有前綴和后綴,那么就:
sjr1.add("Smart").add("Techie");
System.out.println("The final Joined string is " + sjr1);
現(xiàn)在,將看到add和toString()方法的實(shí)現(xiàn)。
public StringJoiner add(CharSequence newElement) {
prepareBuilder().append(newElement);
return this;
}
prepareBuilder()實(shí)現(xiàn)如下。
private StringBuilder prepareBuilder() {
if (value != null) {
value.append(delimiter);
} else {
value = new StringBuilder().append(prefix);
}
return value;
}
從上面的實(shí)現(xiàn)中,可以很明顯看到StringJoiner遵循老式的做法。
toString()實(shí)現(xiàn)如下。
return emptyValue;
} else { public String toString() {
if (value == null) {
if (suffix.equals("")) {
return value.toString();
} else {
int initialLength = value.length();
String result = value.append(suffix).toString();
// reset value to pre-append initialLength
value.setLength(initialLength);
return result;
}
}
更多Java培訓(xùn),Java視頻,Java教程盡在動(dòng)力節(jié)點(diǎn)Java培訓(xùn),關(guān)注動(dòng)力節(jié)點(diǎn)官方微信,獲得一手Java全新知識(shí)。