終于,Java 8在Java.util軟件包下發布了StringJoiner類。相對于我們使用StringBuffer / StringBuilder的舊式做法來連接字符串,這并非是一個迥然不同的實現。今天動力節點的Java老師和大家一起來看一看StringJoiner的用法和它的內部實現。
例如,兩個字符串為“Smart”和“Techie”,連接這些字符串為[Smart,Techie]。在這種情況下,前綴為“[”,后綴為“]”,以及分隔符為“,”。 StringJoiner有如下兩個構造函數。
StringJoiner(CharSequence delimiter)
StringJoiner(CharSequence delimiter, CharSequence prefix, CharSequence suffix)
想要有前綴和后綴,因此在例子中使用第二個構造函數。
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);
現在,將看到add和toString()方法的實現。
public StringJoiner add(CharSequence newElement) {
prepareBuilder().append(newElement);
return this;
}
prepareBuilder()實現如下。
private StringBuilder prepareBuilder() {
if (value != null) {
value.append(delimiter);
} else {
value = new StringBuilder().append(prefix);
}
return value;
}
從上面的實現中,可以很明顯看到StringJoiner遵循老式的做法。
toString()實現如下。
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培訓,Java視頻,Java教程盡在動力節點Java培訓,關注動力節點官方微信,獲得一手Java全新知識。