Guaven - Listen

Guaven - Listen

1. Überblick

In diesem Tutorial werden wir die häufigsten und nützlichsten Methoden fürwork with Lists using the Guava library veranschaulichen.

Beginnen wir einfach - und sehen uns nurcreating a new ArrayList mit Guava-Syntax an - ohnenew:

List names = Lists.newArrayList("John", "Adam", "Jane");

2. Kehren Sie aList um

Lassen Sie uns zunächstreverse a List mitLists.reverse() wie im folgenden Beispiel verwenden:

@Test
public void whenReverseList_thenReversed() {
    List names = Lists.newArrayList("John", "Adam", "Jane");

    List reversed = Lists.reverse(names);
    assertThat(reversed, contains("Jane", "Adam", "John"));
}

3. Generieren SieCharacterList ausString

Nun wollen wir sehen, wie man einen String in eine Liste vonCharacters zerlegt.

Im folgenden Beispiel verwenden wir dieLists.CharactersOf()-API, um aus einemString“John” einCharacterList zu erstellen:

@Test
public void whenCreateCharacterListFromString_thenCreated() {
    List chars = Lists.charactersOf("John");

    assertEquals(4, chars.size());
    assertThat(chars, contains('J', 'o', 'h', 'n'));
}

4. Partition aList

Weiter - Mal sehen, wiepartition aList.

Im folgenden Beispiel verwenden wirLists.partition(), um aufeinanderfolgende Unterlisten der Größe zwei zu erhalten:

@Test
public void whenPartitionList_thenPartitioned(){
    List names = Lists.newArrayList("John","Jane","Adam","Tom","Viki","Tyler");

    List> result = Lists.partition(names, 2);

    assertEquals(3, result.size());
    assertThat(result.get(0), contains("John", "Jane"));
    assertThat(result.get(1), contains("Adam", "Tom"));
    assertThat(result.get(2), contains("Viki", "Tyler"));
}

5. Duplikate vonList entfernen

Verwenden Sie jetzt einen einfachen Trick, um Duplikate ausList zu entfernen.

Im folgenden Beispiel kopieren wir die Elemente inSet und erstellen dann aus den verbleibenden Elementen einList zurück:

@Test
public void whenRemoveDuplicatesFromList_thenRemoved() {
    List chars = Lists.newArrayList('h','e','l','l','o');
    assertEquals(5, chars.size());

    List result = ImmutableSet.copyOf(chars).asList();
    assertThat(result, contains('h', 'e', 'l', 'o'));
}

6. Entfernen Sie Nullwerte ausList

Weiter - mal sehen, wie manremove null values from a List macht.

Im folgenden Beispiel entfernen wir allenull-Werte mithilfe der äußerst nützlichenIterables.removeIf()-API und eines von der Bibliothek selbst bereitgestellten Prädikats:

@Test
public void whenRemoveNullFromList_thenRemoved() {
    List names = Lists.newArrayList("John", null, "Adam", null, "Jane");
    Iterables.removeIf(names, Predicates.isNull());

    assertEquals(3, names.size());
    assertThat(names, contains("John", "Adam", "Jane"));
}

7. Konvertieren Sie einList in einImmutableList

Lassen Sie uns abschließend sehen, wie Sie eine unveränderliche Kopie vonList -ImmutableList - mithilfe derImmutableList.copyOf()-API erstellen:

@Test
public void whenCreateImmutableList_thenCreated() {
    List names = Lists.newArrayList("John", "Adam", "Jane");

    names.add("Tom");
    assertEquals(4, names.size());

    ImmutableList immutable = ImmutableList.copyOf(names);
    assertThat(immutable, contains("John", "Adam", "Jane", "Tom"));
}

8. Fazit

Und hier sind wir - eine kurze Einführung in die meisten nützlichen Dinge, die Sie mit Guava-Listen tun können.

Um noch weiter in Listen zu stöbern, überprüfen Siethe Predicates and Functions guide in Listen sowie die detailliertenguide to Joining and Splitting lists in Guave.

Die Implementierung all dieser Beispiele und Codefragmentecan be found in my Guava github project - dies ist ein Eclipse-basiertes Projekt, daher sollte es einfach zu importieren und auszuführen sein, wie es ist.