Fjerne alle nuller fra en liste i Java

Denne raske opplæringen skal vise hvordan du gjør det Fjern alle null elementer fra en Liste, bruker vanlig Java, Guava, Apache Commons Collections og den nyere Java 8 lambda-støtten.

Denne artikkelen er en del avJava - Tilbake til Basic”-Serien her på Baeldung.

1. Fjern nuller fra a Liste Bruke vanlig Java

Java Collections Framework tilbyr en enkel løsning for fjerne alle nullelementer i Liste - en grunnleggende samtidig som Løkke:

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

Alternativt kan vi også bruke følgende enkle tilnærming:

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

Merk at begge disse løsningene vil endre kildelisten.

2. Fjern nuller fra a Liste Bruke Google Guava

Vi kan også fjerne null ved hjelp av Guava og en mer funksjonell tilnærming, via predikater:

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

Alternativt hvis vi ikke vil endre kildelisten, Guava vil tillate oss å lage en ny filterliste:

@Test offentlig ugyldig 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 a Liste Bruke Apache Commons-samlinger

La oss nå se på en enkel løsning ved hjelp av Apache Commons Collections-biblioteket med en lignende funksjonell stil:

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

Merk at denne løsningen også vil endre den opprinnelige listen.

4. Fjern nuller fra a Liste Bruke Lambdas (Java 8)

Til slutt - la oss se på en Java 8-løsning som bruker Lambdas for å filtrere listen; filtreringsprosessen kan gjøres parallelt eller serielt:

@Test offentlig ugyldig givenListContainsNulls_whenFilteringParallel_thenCorrect () {List list = Lists.newArrayList (null, 1, 2, null, 3, null); List listWithoutNulls = list.parallelStream () .filter (Objects :: nonNull) .collect (Collectors.toList ()); } @Test offentlig ugyldig givenListContainsNulls_whenFilteringSerial_thenCorrect () {List list = Lists.newArrayList (null, 1, 2, null, 3, null); List listWithoutNulls = list.stream () .filter (Objects :: nonNull) .collect (Collectors.toList ()); } offentlig ugyldig 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 - noen raske og veldig nyttige løsninger for å bli kvitt alle nullelementer fra en liste.

5. Konklusjon

I denne artikkelen var vi i stand til å utforske de forskjellige tilnærmingene vi kan ha for å fjerne null fra a Liste ved hjelp av Java, Guava eller Lambdas.

Implementeringen av alle disse eksemplene og utdragene finner du i GitHub-prosjektet. Dette er et Maven-basert prosjekt, så det skal være enkelt å importere og kjøre.


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