Премахване на всички дубликати от списък в Java

Този бърз урок ще ви покаже как да изчистите дублиращите се елементи от списък - първо използвайки обикновена Java, след това Guava и накрая базирано на Java 8 Lambda решение.

Тази статия е част от поредицата „ Java - Back to Basic “ тук на Baeldung.

1. Премахване на дубликати от списък с обикновена Java

Премахването на дублиращите се елементи от списък със стандартната Java Collections Framework се извършва лесно чрез Set :

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)); }

Както можете да видите, оригиналният списък остава непроменен.

2. Премахване на дубликати от списък с помощта на Guava

Същото може да се направи и с 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

И накрая - нека разгледаме ново решение, използвайки Lambdas в Java 8; ще използваме метода distinct () от API на Stream, който връща поток, състоящ се от различни елементи въз основа на резултата, върнат от метода 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, така че трябва да е лесно да се импортира и стартира.