Fjernelse af alle dubletter fra en liste i Java

Denne hurtige vejledning viser dig hvordan man rydder op i duplikatelementerne fra en liste - først ved hjælp af almindelig Java, derefter Guava og endelig en Java 8 Lambda-baseret løsning.

Denne artikel er en del af "Java - Tilbage til Basic”-Serien her på Baeldung.

1. Fjern duplikater fra en liste ved hjælp af almindelig Java

Det er let at fjerne de duplikerede elementer fra en liste med standard Java Collections Framework gennem et sæt:

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

Som du kan se, forbliver den oprindelige liste uændret.

2. Fjern duplikater fra en liste ved hjælp af Guava

Det samme kan også gøres ved hjælp af 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)); }

Og igen forbliver den oprindelige liste uændret.

3. Fjern duplikater fra en liste ved hjælp af Java 8 Lambdas

Endelig - lad os se på en ny løsning ved hjælp af Lambdas i Java 8; Vi skal til brug tydelig () metode fra Stream API som returnerer en strøm bestående af forskellige elementer baseret på resultatet returneret af lige med() metode:

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

Og der har vi det - 3 hurtige måder at rydde op på alle duplikatemner fra en liste.

4. Konklusion

Denne artikel viser os, hvor let vi kan fjerne duplikater fra en liste ved hjælp af almindelig Java, Google Guava og Java 8.

Implementeringen af ​​alle disse eksempler og uddrag findes i GitHub-projektet. Dette er et Maven-baseret projekt, så det skal være let at importere og køre.