Fjernelse af alle Nulls fra en liste i Java

Denne hurtige vejledning viser hvordan man gør det Fjern alt nul elementer fra en Liste, ved hjælp af almindelig Java, Guava, Apache Commons Collections og den nyere Java 8 lambda support.

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

1. Fjern nuller fra en Liste Brug af almindelig Java

Java Collections Framework tilbyder en enkel løsning til fjerner alle null-elementer i Liste - en grundlæggende mens løkke:

@Test offentligt ugyldigt givenListContainsNulls_whenRemovingNullsWithPlainJava_thenCorrect () {List list = Lists.newArrayList (null, 1, null); while (list.remove (null)); assertThat (liste, hasSize (1)); }

Alternativt kan vi også bruge følgende enkle tilgang:

@Test offentlig ugyldighed givenListContainsNulls_whenRemovingNullsWithPlainJavaAlternative_thenCorrect () {List list = Lists.newArrayList (null, 1, null); list.removeAll (Collections.singleton (null)); assertThat (liste, hasSize (1)); }

Bemærk, at begge disse løsninger vil ændre kildelisten.

2. Fjern nuller fra en Liste Brug af Google Guava

Det kan vi også fjern nuller ved hjælp af Guava og en mere funktionel tilgang via prædikater:

@Test offentlig ugyldighed givenListContainsNulls_whenRemovingNullsWithGuavaV1_thenCorrect () {List list = Lists.newArrayList (null, 1, null); Iterables.removeIf (liste, Predicates.isNull ()); assertThat (liste, hasSize (1)); }

Alternativt hvis vi ikke ønsker at ændre kildelisten, Guava giver os mulighed for at oprette en ny filterliste:

@Test offentlig ugyldighed givenListContainsNulls_whenRemovingNullsWithGuavaV2_thenCorrect () {List list = Lists.newArrayList (null, 1, null, 2, 3); List listWithoutNulls = Lists.newArrayList (Iterables.filter (liste, Predicates.notNull ())); assertThat (listWithoutNulls, hasSize (3)); }

3. Fjern nuller fra en Liste Brug af Apache Commons-samlinger

Lad os nu se på en simpel løsning ved hjælp af Apache Commons Collections-biblioteket ved hjælp af en lignende funktionel stil:

@Test offentlig ugyldighed givenListContainsNulls_whenRemovingNullsWithCommonsCollections_thenCorrect () {List list = Lists.newArrayList (null, 1, 2, null, 3, null); CollectionUtils.filter (liste, PredicateUtils.notNullPredicate ()); assertThat (liste, hasSize (3)); }

Bemærk, at denne løsning også vil rediger den oprindelige liste.

4. Fjern nuller fra en Liste Brug af Lambdas (Java 8)

Endelig - lad os se på en Java 8-løsning, der bruger Lambdas til at filtrere listen; filtreringsprocessen kan udføres parallelt eller serielt:

@Test offentligt ugyldigt givenListContainsNulls_whenFilteringParallel_thenCorrect () {List list = Lists.newArrayList (null, 1, 2, null, 3, null); List listWithoutNulls = list.parallelStream () .filter (Objects :: nonNull) .collect (Collectors.toList ()); } @ Test offentligt ugyldigt givenListContainsNulls_whenFilteringSerial_thenCorrect () {List list = Lists.newArrayList (null, 1, 2, null, 3, null); List listWithoutNulls = list.stream () .filter (Objects :: nonNull) .collect (Collectors.toList ()); } offentlig ugyldighed givenListContainsNulls_whenRemovingNullsWithRemoveIf_thenCorrect () {List listWithoutNulls = Lists.newArrayList (null, 1, 2, null, 3, null); listWithoutNulls.removeIf (Objects :: isNull); assertThat (listWithoutNulls, hasSize (3)); }

Og det er det - nogle hurtige og meget nyttige løsninger til at slippe af med alle null-elementer fra en liste.

5. Konklusion

I denne artikel var vi i stand til at udforske de forskellige tilgange, vi kan have for at fjerne nuller fra en Liste ved hjælp af Java, Guava eller Lambdas.

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.


$config[zx-auto] not found$config[zx-overlay] not found