Az összes Null eltávolítása egy Java listáról

Ez a gyors bemutató bemutatja, hogyan kell összes eltávolítása nulla elemek a Lista, egyszerű Java, Guava, az Apache Commons Gyűjtemények és az újabb Java 8 lambda támogatás használatával.

Ez a cikk a „Java - Vissza az alapokhoz”Sorozat itt, a Baeldungon.

1. Távolítsa el a nullákat a Lista Sima Java használatával

A Java Collections Framework egyszerű megoldást kínál a az összes null elem eltávolítása a Lista - alap míg hurok:

@Test public void givenListContainsNulls_whenRemovingNullsWithPlainJava_thenCorrect () {List list = Lists.newArrayList (null, 1, null); while (list.remove (null)); assertThat (lista, hasSize (1)); }

Alternatív megoldásként a következő egyszerű megközelítést is alkalmazhatjuk:

@Test public void givenListContainsNulls_whenRemovingNullsWithPlainJavaAlternative_thenCorrect () {List list = Lists.newArrayList (null, 1, null); list.removeAll (Collections.singleton (null)); assertThat (lista, hasSize (1)); }

Vegye figyelembe, hogy mindkét megoldás megváltoztatja a forráslistát.

2. Távolítsa el a nullákat a Lista A Google Guava használata

Azt is megtehetjük távolítsa el a nullákat Guava használatával és egy funkcionálisabb megközelítés predikátumokon keresztül:

@Test public void givenListContainsNulls_whenRemovingNullsWithGuavaV1_thenCorrect () {List list = Lists.newArrayList (null, 1, null); Iterables.removeIf (list, Predicates.isNull ()); assertThat (lista, hasSize (1)); }

Alternatív megoldásként ha nem akarjuk módosítani a forráslistát, Guava lehetővé teszi számunkra, hogy új szűrő listát hozzunk létre:

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

3. Távolítsa el a nullákat a Lista Az Apache Commons gyűjtemények használata

Most nézzünk meg egy egyszerű megoldást az Apache Commons Collections könyvtár segítségével, hasonló funkcionális stílus használatával:

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

Vegye figyelembe, hogy ez a megoldás is módosítsa az eredeti listát.

4. Távolítsa el a nullákat a Lista A Lambdas (Java 8) használata

Végül - nézzük meg Java 8 megoldás a Lambdas segítségével a Lista szűrésére; a szűrési folyamat párhuzamosan vagy sorosan végezhető:

@Test public void givenListContainsNulls_whenFilteringParallel_thenCorrect () {List list = Lists.newArrayList (null, 1, 2, null, 3, null); List listWithoutNulls nélkül = list.parallelStream () .filter (Objects :: nonNull) .collect (Collectors.toList ()); } @Test public void givenListContainsNulls_whenFilteringSerial_thenCorrect () {List list = Lists.newArrayList (null, 1, 2, null, 3, null); List listWulloutNulls nélkül = list.stream () .filter (Objects :: nonNull) .collect (Collectors.toList ()); } public void givenListContainsNulls_whenRemovingNullsWithRemoveIf_thenCorrect () {List listWithoutNulls = Lists.newArrayList (null, 1, 2, null, 3, null); listWithoutNulls.removeIf (Objektumok :: isNull); assertThat (listWithoutNulls, hasSize (3)); }

És ez az - néhány gyors és nagyon hasznos megoldás a lista összes null elemének megszabadításához.

5. Következtetés

Ebben a cikkben felfedezhettük azokat a különböző megközelítéseket, amelyekkel eltávolíthatjuk a null-okat az a-ból Lista Java, Guava vagy Lambdas használatával.

Mindezen példák és kivonatok megvalósítása megtalálható a GitHub projektben. Ez egy Maven-alapú projekt, így könnyen importálhatónak és futtathatónak kell lennie.