Guave - Sammlungen beitreten und aufteilen

1. Übersicht

In diesem Tutorial werden wir lernen , wie Sie mit den Joiner und Splitter in der Guava - Bibliothek . Wir konvertieren Sammlungen mit dem Joiner in einen String und teilen einen String mit dem Splitter in eine Sammlung auf .

2. Konvertieren Sie die Liste mit Joiner in einen String

Beginnen wir mit einem einfachen Beispiel, um eine Liste mit Joiner zu einem String zu verbinden . Im folgenden Beispiel fügen wir eine Liste von Namen zu einem String hinzu, wobei das Komma "," als Trennzeichen verwendet wird:

@Test public void whenConvertListToString_thenConverted() { List names = Lists.newArrayList("John", "Jane", "Adam", "Tom"); String result = Joiner.on(",").join(names); assertEquals(result, "John,Jane,Adam,Tom"); }

3. Konvertieren Karte zu String Mit Joiner

Weiter - sehen wir uns an, wie Sie mit Joiner eine Map in einen String konvertieren . Im folgenden Beispiel verwenden wir withKeyValueSeparator () , um den Schlüssel mit seinem Wert zu verknüpfen :

@Test public void whenConvertMapToString_thenConverted() { Map salary = Maps.newHashMap(); salary.put("John", 1000); salary.put("Jane", 1500); String result = Joiner.on(" , ").withKeyValueSeparator(" = ") .join(salary); assertThat(result, containsString("John = 1000")); assertThat(result, containsString("Jane = 1500")); }

4. Verschachtelten Sammlungen beitreten

Nun wollen wir sehen, wie verschachtelte Sammlungen zu einem String zusammengefügt werden . Im folgenden Beispiel verbinden wir das Ergebnis der Umwandlung jeder Liste in einen String :

@Test public void whenJoinNestedCollections_thenJoined() { List
    
      nested = Lists.newArrayList( Lists.newArrayList("apple", "banana", "orange"), Lists.newArrayList("cat", "dog", "bird"), Lists.newArrayList("John", "Jane", "Adam")); String result = Joiner.on(";").join(Iterables.transform(nested, new Function
     
      () { @Override public String apply(List input) { return Joiner.on("-").join(input); } })); assertThat(result, containsString("apple-banana-orange")); assertThat(result, containsString("cat-dog-bird")); assertThat(result, containsString("apple-banana-orange")); }
     
    

5. Behandeln Sie Nullwerte, während Sie Joiner verwenden

Lassen Sie uns nun verschiedene Möglichkeiten zum Umgang mit Nullwerten bei der Verwendung von Joiner sehen.

Um Nullwerte beim Beitritt zur Sammlung zu überspringen, verwenden Sie skipNulls () wie im folgenden Beispiel:

@Test public void whenConvertListToStringAndSkipNull_thenConverted() { List names = Lists.newArrayList("John", null, "Jane", "Adam", "Tom"); String result = Joiner.on(",").skipNulls().join(names); assertEquals(result, "John,Jane,Adam,Tom"); }

Wenn Sie keine Nullwerte überspringen und stattdessen ersetzen möchten , verwenden Sie useForNull () wie im folgenden Beispiel:

@Test public void whenUseForNull_thenUsed() { List names = Lists.newArrayList("John", null, "Jane", "Adam", "Tom"); String result = Joiner.on(",").useForNull("nameless").join(names); assertEquals(result, "John,nameless,Jane,Adam,Tom"); }

Beachten Sie, dass useForNull () die ursprüngliche Liste nicht ändert, sondern nur die Ausgabe des Joins beeinflusst.

6. Erstellen Sie eine Liste aus einem String mit Splitter

Nun wollen wir sehen, wie man einen String in eine Liste aufteilt . Im folgende Beispiel verwenden wir „-“ Separator , um die Eingabe zu spalten String zu Liste :

@Test public void whenCreateListFromString_thenCreated() { String input = "apple - banana - orange"; List result = Splitter.on("-").trimResults() .splitToList(input); assertThat(result, contains("apple", "banana", "orange")); }

Beachten Sie, dass trimResults () das führende und nachfolgende Leerzeichen aus den resultierenden Teilzeichenfolgen entfernt.

7. Erstellen Sie eine Karte aus einem String mit Splitter

Weiter - sehen wir uns an, wie Sie mit Splitter eine Karte aus einem String erstellen. Im folgenden Beispiel verwenden wir withKeyValueSeparator () , um einen String in eine Map aufzuteilen :

@Test public void whenCreateMapFromString_thenCreated() { String input = "John=first,Adam=second"; Map result = Splitter.on(",") .withKeyValueSeparator("=") .split(input); assertEquals("first", result.get("John")); assertEquals("second", result.get("Adam")); }

8. Geteilte Zeichenfolge mit mehreren Trennzeichen

Nun wollen wir sehen, wie man einen String mit mehreren Trennzeichen teilt . Im folgenden Beispiel verwenden wir beide "." und ",", um unseren String zu teilen :

@Test public void whenSplitStringOnMultipleSeparator_thenSplit() { String input = "apple.banana,,orange,,."; List result = Splitter.onPattern("[.,]") .omitEmptyStrings() .splitToList(input); assertThat(result, contains("apple", "banana", "orange")); }

Beachten Sie, dass omitEmptyStrings () leere Zeichenfolgen ignoriert und sie nicht zur resultierenden Liste hinzufügt .

9. Teilen Sie einen String mit einer bestimmten Länge

Weiter - Schauen wir uns an, wie Sie einen String in einer bestimmten Länge teilen . Im folgenden Beispiel teilen wir unseren String alle 3 Zeichen auf:

@Test public void whenSplitStringOnSpecificLength_thenSplit() { String input = "Hello world"; List result = Splitter.fixedLength(3).splitToList(input); assertThat(result, contains("Hel", "lo ", "wor", "ld")); }

10. Begrenzen Sie das Split-Ergebnis

Zum Schluss sehen wir uns an, wie Sie das Split-Ergebnis begrenzen können. Wenn Sie das wollen , Splitter zu Splitting nach bestimmten Anzahl von Elementen zu stoppen - Verwendung limit () wie im folgende Beispiel:

@Test public void whenLimitSplitting_thenLimited() { String input = "a,b,c,d,e"; List result = Splitter.on(",") .limit(4) .splitToList(input); assertEquals(4, result.size()); assertThat(result, contains("a", "b", "c", "d,e")); }

11. Schlussfolgerung

In diesem Tutorial haben wir gezeigt, wie Sie mit Joiner und Splitter in Guava verschiedene Transformationen zwischen Sammlungen und Strings durchführen können.

Die Implementierung all dieser Beispiele und Codefragmente finden Sie in meinem Guava-Github-Projekt - dies ist ein Eclipse-basiertes Projekt, daher sollte es einfach zu importieren und auszuführen sein, wie es ist.