Heim Java javaLernprogramm Detaillierte Code-Erklärung von Java8 StringJoiner

Detaillierte Code-Erklärung von Java8 StringJoiner

Mar 24, 2017 am 11:02 AM

Schließlich veröffentlicht Java 8 die StringJoiner-Klasse unter dem Paket java.util. Ich glaube nicht, dass dies eine radikal andere Implementierung ist als unser altmodischer Ansatz, StringBuffer/StringBuilder zum Verketten von Strings zu verwenden. Werfen wir einen Blick auf die Verwendung von StringJoiner und seine interne Implementierung.

Zum Beispiel habe ich zwei Zeichenfolgen namens „Smart“ und „Techie“ und möchte diese Zeichenfolgen zu [Smart,Techie] verketten. In diesem Fall ist mein Präfix „[“, das Suffix „]“ und das Trennzeichen „“,. StringJoiner verfügt über die folgenden zwei Konstruktoren .

StringJoiner(CharSequence delimiter)
Nach dem Login kopieren
StringJoiner(CharSequence delimiter, CharSequence prefix, CharSequence suffix)
Nach dem Login kopieren

Wir möchten Präfixe und Suffixe haben, also verwenden Sie den zweiten Konstruktor im Beispiel.

StringJoiner sjr = new StringJoiner(",", "[", "]");
sjr.add("Smart").add("Techie");
System.out.println("The final Joined string is " + sjr);
Nach dem Login kopieren

Wenn wir kein Präfix und Suffix haben möchten, dann gehen Sie einfach wie folgt vor:

sjr1.add("Smart").add("Techie");
System.out.println("The final Joined string is " + sjr1);
Nach dem Login kopieren

Jetzt sehen wir uns die Implementierung der Methoden add und toString() an.

public StringJoiner add(CharSequence newElement) {
   prepareBuilder().append(newElement);
   return this;
}
Nach dem Login kopieren

prepareBuilder() wird wie folgt implementiert.

private StringBuilder prepareBuilder() {
    if (value != null) {
       value.append(delimiter);
    } else {
       value = new StringBuilder().append(prefix);
    }
    return value;
}
Nach dem Login kopieren

Aus der obigen Implementierung ist ersichtlich, dass StringJoiner dem altmodischen Ansatz folgt.

toString() wird wie folgt implementiert.

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;
    }
}
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonDetaillierte Code-Erklärung von Java8 StringJoiner. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Wie berechnet man das Datum vor einem Jahr oder einem Jahr später in Java 8? Wie berechnet man das Datum vor einem Jahr oder einem Jahr später in Java 8? Apr 26, 2023 am 09:22 AM

Java8 berechnet das Datum vor einem Jahr oder ein Jahr später mithilfe der minus()-Methode, um das Datum vor einem Jahr zu berechnen packagecom.shxt.demo02;importjava.time.LocalDate;importjava.time.temporal.ChronoUnit;publicclassDemo09{publicstaticvoidmain(String[ ]args ){LocalDatetoday=LocalDate.now();LocalDate previousYear=today.minus(1,ChronoUni

Wie berechnet man das Datum eine Woche später mit Java 8? Wie berechnet man das Datum eine Woche später mit Java 8? Apr 21, 2023 pm 11:01 PM

So berechnen Sie das Datum eine Woche später in Java8. In diesem Beispiel wird das Datum eine Woche später berechnet. Das LocalDate-Datum enthält keine Zeitinformationen. Seine plus()-Methode wird zum Hinzufügen von Tagen, Wochen und Monaten verwendet. Die ChronoUnit-Klasse deklariert diese Zeiteinheiten. Da LocalDate ebenfalls ein unveränderlicher Typ ist, müssen Sie Variablen verwenden, um nach der Rückgabe Werte zuzuweisen. packagecom.shxt.demo02;importjava.time.LocalDate;importjava.time.temporal.ChronoUnit;publicclassDemo08{publicstaticvoidmain(String[

So verwenden Sie die Clock-Klasse in Java8 So verwenden Sie die Clock-Klasse in Java8 Apr 25, 2023 pm 03:37 PM

Die Clock-Klasse von Java8 Java8 fügt eine Clock-Klasse zum Abrufen des aktuellen Zeitstempels oder von Datums- und Uhrzeitinformationen in der aktuellen Zeitzone hinzu. Wo zuvor System.currentTimeInMillis() und TimeZone.getDefault() verwendet wurden, können sie durch Clock ersetzt werden. packagecom.shxt.demo02;importjava.time.Clock;publicclassDemo10{publicstaticvoidmain(String[]args){//Gibt die aktuelle Zeitbasis zurück

So erhalten Sie den aktuellen Zeitstempel in Java8 So erhalten Sie den aktuellen Zeitstempel in Java8 May 01, 2023 am 11:46 AM

Rufen Sie den aktuellen Zeitstempel in Java8 ab. Die Instant-Klasse verfügt über eine statische Factory-Methode now(), die den aktuellen Zeitstempel zurückgibt, wie unten gezeigt: packagecom.shxt.demo02;importjava.time.Instant;publicclassDemo16{publicstaticvoidmain(String[]args) {Instanttimestamp=Instant.now();System.out.println("Whatisvalueofthisinstant"+timestamp.t

So verwenden Sie vordefinierte Formatierungstools zum Analysieren oder Formatieren von Datumsangaben in Java8 So verwenden Sie vordefinierte Formatierungstools zum Analysieren oder Formatieren von Datumsangaben in Java8 Apr 28, 2023 pm 07:40 PM

So verwenden Sie vordefinierte Formatierungstools in Java8, um Datumsangaben zu analysieren oder zu formatieren packagecom.shxt.demo02;importjava.time.LocalDate;importjava.time.format.DateTimeFormatter;publicclassDemo17{publicstaticvoidmain(String[]args){StringdayAfterTommorrow="20180205 ";LocalDateformatted =LocalDate.parse

So ermitteln Sie, ob zwei Datumsangaben in Java8 gleich sind So ermitteln Sie, ob zwei Datumsangaben in Java8 gleich sind May 02, 2023 am 08:46 AM

Bestimmen Sie, ob zwei Datumsangaben in Java8 gleich sind packagecom.shxt.demo02;importjava.time.LocalDate;publicclassDemo04{publicstaticvoidmain(String[]args){LocalDatedate1=LocalDate.now();LocalDatedate2=LocalDate.of(2018,2,5) ;if(date1.equals(date2)){System.out.println("Times are equal");}e

So erhalten Sie Jahres-, Monats- und Tagesinformationen in Java8 So erhalten Sie Jahres-, Monats- und Tagesinformationen in Java8 Apr 19, 2023 am 09:49 AM

Die Java8-Version enthält folgende Pakete: packagecom.shxt.demo02;importjava.time.LocalDate;publicclassDemo02{publicstaticvoidmain(String[]args){LocalDatetoday=LocalDate.now();intyear=today.getYear();intmonth=today .getMonthValue();intday=today.getDayOfMonth();System.out.println

Wie überprüfe ich das Schaltjahr in Java 8? Wie überprüfe ich das Schaltjahr in Java 8? May 08, 2023 pm 11:16 PM

在Java8中检查闰年packagecom.shxt.demo02;importjava.time.LocalDate;publicclassDemo14{publicstaticvoidmain(String[]args){LocalDatetoday=LocalDate.now();if(today.isLeapYear()){System.out.println( "ThisyearisLeapyear");}else{System.out.println("2

See all articles