Uklanjanje svih duplikata s popisa na Javi

Ovaj brzi vodič će vam pokazati kako očistiti dvostruke elemente s popisa - prvo koristeći običnu Javu, zatim Guavu i na kraju rješenje temeljeno na Java 8 Lambda.

Ovaj je članak dio „Java - Povratak na Basic”Serija ovdje na Baeldungu.

1. Uklonite duplikate s popisa pomoću obične Jave

Uklanjanje duplikata elemenata s popisa pomoću standardnog okvira Java Collections Framework vrši se jednostavno kroz Set:

javna praznina givenListContainsDuplicates_whenRemovingDuplicatesWithPlainJava_thenCorrect () {List listWithDuplicates = Lists.newArrayList (0, 1, 2, 3, 0, 0); Lista listWithoutDuplicates = novi ArrayList (novi HashSet (listWithDuplicates)); assertThat (listWithoutDuplicates, hasSize (4)); }

Kao što vidite, izvorni popis ostaje nepromijenjen.

2. Uklonite duplikate sa popisa pomoću Guave

Isto se može učiniti i pomoću Guave:

javna praznina givenListContainsDuplicates_whenRemovingDuplicatesWithGuava_thenCorrect () {List listWithDuplicates = Lists.newArrayList (0, 1, 2, 3, 0, 0); Popis listWithoutDuplicates = Lists.newArrayList (Sets.newHashSet (listWithDuplicates)); assertThat (listWithoutDuplicates, hasSize (4)); }

I opet, izvorni popis ostaje nepromijenjen.

3. Uklonite duplikate sa popisa pomoću Java 8 Lambdas

Napokon - pogledajmo novo rješenje, koristeći Lambdas u Javi 8; idemo koristiti različit () metoda iz API-ja Stream koji vraća tok koji se sastoji od različitih elemenata na temelju rezultata koji je vratio jednako () metoda:

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

I tu imamo - 3 brza načina čišćenja svih dupliciranih stavki s popisa.

4. Zaključak

Ovaj nam članak pokazuje kako lako možemo ukloniti duplikate sa popisa pomoću obične Java, Google Guave i Java 8.

Provedba svih ovih primjera i isječaka može se naći u projektu GitHub. Ovo je projekt zasnovan na Mavenu, pa bi ga trebalo lako uvesti i pokrenuti.