Автор оригинала: Eugen Paraschiv.
Этот краткий учебник покажет вам как очистить дубликаты элементов из списка – сначала с помощью простой Java, затем Guava и, наконец, лямбда-решения Java 8.
Эта статья является частью серии “Java – Back to Basic” здесь, на Baeldung.
1. Удалите Дубликаты Из Списка С Помощью Простой Java
Удаление дубликатов элементов из списка с помощью стандартного фреймворка Java Collections производится легко через набор :
public void givenListContainsDuplicates_whenRemovingDuplicatesWithPlainJava_thenCorrect() { ListlistWithDuplicates = 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() { ListlistWithDuplicates = 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() { ListlistWithDuplicates = 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, поэтому его должно быть легко импортировать и запускать.