首頁  >  文章  >  Java  >  Java8 StringJoiner的程式碼詳解

Java8 StringJoiner的程式碼詳解

黄舟
黄舟原創
2017-03-24 11:02:091762瀏覽

終於,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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn