Този бърз урок ще ви покаже как да изчистите дублиращите се елементи от списък - първо използвайки обикновена 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, така че трябва да е лесно да се импортира и стартира.