終於,Java 8在java.util軟體包下發布了StringJoiner類別。我認為相對於我們使用StringBuffer / StringBuilder的舊式做法來連接字串,這並非是一個迥然不同的實作。讓我們一起來看看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()實作如下。
public String toString() { if (value == null) { return emptyValue; } else { 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; } }
以上是Java8 StringJoiner的程式碼詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!