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.