Гуава - Списки

Гуава - Списки

1. обзор

В этом руководстве мы проиллюстрируем наиболее распространенные и полезные способыwork with Lists using the Guava library.

Давайте начнем с простого - и взглянем только наcreating a new ArrayList с использованием синтаксиса Guava - безnew:

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

2. Обратный aList

Во-первых, позвольтеreverse a List использоватьLists.reverse(), как в следующем примере:

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

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

3. СгенерироватьCharacterList изString

А теперь давайте посмотрим, как разбить строку на списокCharacters.

В следующем примере мы используем APILists.CharactersOf() для созданияCharacterList изString“John”:

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

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

4. Раздел aList

Далее - Давайте посмотрим, какpartition aList.

В следующем примере - мы используемLists.partition(), чтобы получить последовательные подсписки каждого размера два:

@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. Удалить дубликаты изList

А теперь давайте воспользуемся простым приемом, чтобы удалить дубликаты изList.

В следующем примере мы копируем элементы вSet, а затем снова создаемList из оставшихся элементов:

@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. Удалить нулевые значения изList

Далее - давайте посмотрим, какremove null values from a List.

В следующем примере мы удаляем все значенияnull, используя очень полезный APIIterables.removeIf() и предикат, предоставляемый самой библиотекой:

@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. ПреобразованиеList вImmutableList

Наконец, давайте посмотрим, как создать неизменяемую копиюList - anImmutableList - с помощью 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. Заключение

И вот мы - краткое руководство, в котором рассматриваются большинство полезных вещей, которые вы можете делать со списками, используя Guava.

Чтобы еще глубже изучить списки, просмотритеthe Predicates and Functions guide в списках, а также подробныйguide to Joining and Splitting lists в Guava.

Реализация всех этих примеров и фрагментов кодаcan be found in my Guava github project - это проект на основе Eclipse, поэтому его должно быть легко импортировать и запускать как есть.