Goyave - Listes

Goyave - Listes

1. Vue d'ensemble

Dans ce didacticiel, nous illustrerons les moyens les plus courants et les plus utiles dework with Lists using the Guava library.

Commençons simplement - et regardons seulementcreating a new ArrayList en utilisant la syntaxe Guava - sansnew:

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

2. Inverser aList

Commençons parreverse a List en utilisantLists.reverse() comme dans l'exemple suivant:

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

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

3. GénérerCharacterList à partir d'unString

Voyons maintenant comment diviser une chaîne en une liste deCharacters.

Dans l'exemple suivant - nous utilisons l'APILists.CharactersOf() pour créer unCharacterList à partir d'unString“John”:

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

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

4. Partition aList

Suivant - Voyons comment faire pourpartition aList.

Dans l'exemple suivant, nous utilisonsLists.partition() pour obtenir des sous-listes consécutives de taille deux:

@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. Supprimer les doublons deList

Maintenant, utilisons une astuce simple pour supprimer les doublons d'unList.

Dans l'exemple suivant - nous copions les éléments dans unSet, puis nous créons unList à partir des éléments restants:

@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. Supprimer les valeurs nulles deList

Ensuite, voyons commentremove null values from a List.

Dans l'exemple suivant, nous supprimons toutes les valeursnull à l'aide de l'APIIterables.removeIf() très utile et d'un prédicat fourni par la bibliothèque elle-même:

@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. Convertir unList en unImmutableList

Enfin, voyons comment créer une copie immuable d'unList - anImmutableList - à l'aide de l'APIImmutableList.copyOf():

@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. Conclusion

Et nous en sommes là: voici un petit didacticiel qui décrit la plupart des choses utiles que vous pouvez faire avec les listes utilisant Guava.

Pour creuser encore plus dans les listes, consultezthe Predicates and Functions guide vers les listes ainsi que lesguide to Joining and Splitting lists en profondeur dans Guava.

L'implémentation de tous ces exemples et extraits de codecan be found in my Guava github project - il s'agit d'un projet basé sur Eclipse, il devrait donc être facile à importer et à exécuter tel quel.