Suppression de tous les Nulls d'une liste en Java

Ce tutoriel rapide va montrer comment supprimer tous les éléments nuls d'une liste , en utilisant Java, Guava, les collections Apache Commons et le nouveau support Java 8 lambda.

Cet article fait partie de la série « Java - Back to Basic » ici sur Baeldung.

1. Supprimer les valeurs nulles d'une liste à l' aide de Java standard

Le Java Collections Framework offre une solution simple pour supprimer tous les éléments nuls de la liste - une boucle while de base :

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

Alternativement, nous pouvons également utiliser l'approche simple suivante:

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

Notez que ces deux solutions modifieront la liste source.

2. Supprimez les valeurs nulles d'une liste à l' aide de Google Guava

Nous pouvons également supprimer les valeurs nulles en utilisant Guava et une approche plus fonctionnelle, via des prédicats:

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

Sinon, si nous ne voulons pas modifier la liste source , Guava nous permettra de créer une nouvelle liste de filtres:

@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. Supprimer les valeurs nulles d'une liste à l' aide des collections Apache Commons

Examinons maintenant une solution simple utilisant la bibliothèque Apache Commons Collections en utilisant un style fonctionnel similaire:

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

Notez que cette solution modifiera également la liste d'origine .

4. Suppression des valeurs nulles d'une liste à l' aide de Lambdas (Java 8)

Enfin, regardons une solution Java 8 utilisant Lambdas pour filtrer la liste ; le processus de filtrage peut être effectué en parallèle ou en série:

@Test public void givenListContainsNulls_whenFilteringParallel_thenCorrect() { List list = Lists.newArrayList(null, 1, 2, null, 3, null); List listWithoutNulls = 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 listWithoutNulls = 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(Objects::isNull); assertThat(listWithoutNulls, hasSize(3)); }

Et c'est tout - des solutions rapides et très utiles pour se débarrasser de tous les éléments nuls d'une liste.

5. Conclusion

Dans cet article, nous avons pu explorer les différentes approches que nous pouvons avoir pour supprimer les valeurs nulles d'une liste à l' aide de Java, Guava ou Lambdas.

L'implémentation de tous ces exemples et extraits de code se trouve dans le projet GitHub. Il s'agit d'un projet basé sur Maven, il devrait donc être facile à importer et à exécuter.