Рубрики
Без рубрики

Удаление всех дубликатов из списка в Java

Как удалить все повторяющиеся элементы из списка – сначала с помощью простой Java, затем Guava и, наконец, с помощью Java 8 lambdas.

Автор оригинала: Eugen Paraschiv.

Этот краткий учебник покажет вам как очистить дубликаты элементов из списка – сначала с помощью простой Java, затем Guava и, наконец, лямбда-решения Java 8.

Эта статья является частью серии “Java – Back to Basic” здесь, на Baeldung.

1. Удалите Дубликаты Из Списка С Помощью Простой Java

Удаление дубликатов элементов из списка с помощью стандартного фреймворка Java Collections производится легко через набор :

public void 
  givenListContainsDuplicates_whenRemovingDuplicatesWithPlainJava_thenCorrect() {
    List listWithDuplicates = Lists.newArrayList(0, 1, 2, 3, 0, 0);
    List listWithoutDuplicates = new ArrayList<>(
      new HashSet<>(listWithDuplicates));

    assertThat(listWithoutDuplicates, hasSize(4));
}

Как видите, исходный список остается неизменным.

Дальнейшее чтение:

Java Collections Interview Questions

Java – Объединение Нескольких Коллекций

Как найти элемент в списке с помощью Java

2. Удалите Дубликаты Из Списка С Помощью Guava

То же самое можно сделать и с помощью Гуавы:

public void 
  givenListContainsDuplicates_whenRemovingDuplicatesWithGuava_thenCorrect() {
    List listWithDuplicates = Lists.newArrayList(0, 1, 2, 3, 0, 0);
    List listWithoutDuplicates 
      = Lists.newArrayList(Sets.newHashSet(listWithDuplicates));

    assertThat(listWithoutDuplicates, hasSize(4));
}

И снова первоначальный список остается неизменным.

3. Удалите Дубликаты Из Списка С Помощью Java 8 Lambdas

Наконец, давайте рассмотрим новое решение, использующее лямбды в Java 8; мы собираемся использовать метод distinct() из Stream API , который возвращает поток, состоящий из различных элементов, на основе результата, возвращаемого методом equals() :

public void 
  givenListContainsDuplicates_whenRemovingDuplicatesWithJava8_thenCorrect() {
    List listWithDuplicates = Lists.newArrayList(1, 1, 2, 2, 3, 3);
    List listWithoutDuplicates = listWithDuplicates.stream()
     .distinct()
     .collect(Collectors.toList());
}

И вот оно – 3 быстрых способа очистить все дубликаты элементов из списка.

4. Заключение

Эта статья демонстрирует нам, как легко мы можем удалить дубликаты из списка С помощью Простой Java, Google Guava и Java 8.

Реализацию всех этих примеров и фрагментов можно найти в проекте GitHub . Это проект на основе Maven, поэтому его должно быть легко импортировать и запускать.