Alle null-waarden verwijderen uit een lijst in Java

Deze korte tutorial laat zien hoe Verwijder alles nul elementen uit een Lijst, gebruik makend van gewoon Java, Guava, de Apache Commons Collections en de nieuwere Java 8 lambda-ondersteuning.

Dit artikel maakt deel uit van de “Java - Terug naar Basic”Serie hier op Baeldung.

1. Nulls verwijderen uit een Lijst Gebruik gewoon Java

Het Java Collections Framework biedt een eenvoudige oplossing voor het verwijderen van alle null-elementen in het Lijst - een basis terwijl lus:

@Test openbare ongeldig gegevenListContainsNulls_whenRemovingNullsWithPlainJava_thenCorrect () {List list = Lists.newArrayList (null, 1, null); while (list.remove (null)); assertThat (lijst, hasSize (1)); }

Als alternatief kunnen we ook de volgende eenvoudige benadering gebruiken:

@Test openbare ongeldig gegevenListContainsNulls_whenRemovingNullsWithPlainJavaAlternative_thenCorrect () {List list = Lists.newArrayList (null, 1, null); list.removeAll (Collections.singleton (null)); assertThat (lijst, hasSize (1)); }

Merk op dat beide oplossingen de bronlijst zullen wijzigen.

2. Nulls verwijderen uit een Lijst Met Google Guava

We kunnen ook verwijder nulls met Guava en een meer functionele benadering, via predikaten:

@Test openbare ongeldig gegevenListContainsNulls_whenRemovingNullsWithGuavaV1_thenCorrect () {List list = Lists.newArrayList (null, 1, null); Iterables.removeIf (lijst, Predicates.isNull ()); assertThat (lijst, hasSize (1)); }

Alternatief, als we de bronlijst niet willen wijzigen, Guava stelt ons in staat om een ​​nieuwe filterlijst te maken:

@Test openbare ongeldige gegevenListContainsNulls_whenRemovingNullsWithGuavaV2_thenCorrect () {List list = Lists.newArrayList (null, 1, null, 2, 3); List listWithoutNulls = Lists.newArrayList (Iterables.filter (lijst, Predicates.notNull ())); assertThat (listWithoutNulls, hasSize (3)); }

3. Nulls verwijderen uit een Lijst Apache Commons-verzamelingen gebruiken

Laten we nu eens kijken naar een eenvoudige oplossing met behulp van de Apache Commons Collections-bibliotheek met een vergelijkbare functionele stijl:

@Test openbare ongeldige gegevenListContainsNulls_whenRemovingNullsWithCommonsCollections_thenCorrect () {List list = Lists.newArrayList (null, 1, 2, null, 3, null); CollectionUtils.filter (lijst, PredicateUtils.notNullPredicate ()); assertThat (lijst, hasSize (3)); }

Merk op dat deze oplossing ook zal werken wijzig de originele lijst.

4. Nulls verwijderen uit een Lijst Lambdas gebruiken (Java 8)

Eindelijk - laten we eens kijken een Java 8-oplossing die Lambdas gebruikt om de lijst te filteren; het filterproces kan parallel of serieel worden uitgevoerd:

@Test openbare ongeldig gegevenListContainsNulls_whenFilteringParallel_thenCorrect () {List list = Lists.newArrayList (null, 1, 2, null, 3, null); Lijst listWithoutNulls = list.parallelStream () .filter (Objects :: nonNull) .collect (Collectors.toList ()); } @Test openbare ongeldig gegevenListContainsNulls_whenFilteringSerial_thenCorrect () {List list = Lists.newArrayList (null, 1, 2, null, 3, null); Lijst listWithoutNulls = list.stream () .filter (Objects :: nonNull) .collect (Collectors.toList ()); } openbare ongeldige gegevenListContainsNulls_whenRemovingNullsWithRemoveIf_thenCorrect () {List listWithoutNulls = Lists.newArrayList (null, 1, 2, null, 3, null); listWithoutNulls.removeIf (Objects :: isNull); assertThat (listWithoutNulls, hasSize (3)); }

En dat is alles - enkele snelle en zeer nuttige oplossingen om alle null-elementen uit een lijst te verwijderen.

5. Conclusie

In dit artikel hebben we de verschillende benaderingen kunnen onderzoeken die we kunnen hebben om null-waarden uit een Lijst met behulp van Java, Guava of Lambdas.

De implementatie van al deze voorbeelden en fragmenten is te vinden in het GitHub-project. Dit is een op Maven gebaseerd project, dus het moet gemakkelijk te importeren en uit te voeren zijn.