Goiaba - Listas

Goiaba - Listas

1. Visão geral

Neste tutorial - ilustraremos as maneiras mais comuns e úteis dework with Lists using the Guava library.

Vamos começar com simplicidade - e dar uma olhada em apenascreating a new ArrayList usando a sintaxe Guava - semnew:

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

2. Reverter aList

Primeiro, vamosreverse a List usandoLists.reverse() como no exemplo a seguir:

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

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

3. GereCharacterList a partir deString

Agora - vamos ver como separar uma String em uma lista deCharacters.

No exemplo a seguir - usamos a APILists.CharactersOf() para criar umCharacterList a partir de umString“John”:

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

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

4. Particionar aList

A seguir - vamos ver comopartition aList.

No exemplo a seguir - usamosLists.partition() para obter sublistas consecutivas de tamanho dois:

@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. Remover duplicatas deList

Agora - vamos usar um truque simples para remover duplicatas de umList.

No exemplo a seguir - copiamos os elementos em umSete criamos umList de volta com os elementos restantes:

@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. Remova os valores nulos deList

A seguir - vamos ver comoremove null values from a List.

No exemplo a seguir, removemos todos os valoresnull usando a APIIterables.removeIf() altamente útil e um predicado fornecido pela própria biblioteca:

@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. Converta umList em umImmutableList

Finalmente - vamos ver como criar uma cópia imutável de umList - umImmutableList - usando a 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. Conclusão

E aqui estamos nós - um rápido tutorial abordando a maioria das coisas úteis que você pode fazer com Listas usando o Guava.

Para se aprofundar ainda mais nas listas, verifiquethe Predicates and Functions guide nas listas, bem como osguide to Joining and Splitting lists em profundidade no Guava.

A implementação de todos esses exemplos e fragmentos de códigocan be found in my Guava github project - este é um projeto baseado no Eclipse, portanto, deve ser fácil de importar e executar como está.