Java - Supprimer null de la liste des objets [dupliquer]

Nov 19 2020

J'ai un objet de liste java de taille énorme comme suit:

List<Object[]> res = // repo method that will return query result

Je dois supprimer les valeurs nulles de l'objet res.

J'ai essayé les méthodes ci-dessous jusqu'à présent, mais rien ne semblait fonctionner:

1. res.remove(null);
2. res.removeAll(Collections.singleton(null));
3. res.removeAll(null);
4. while(res.remove(null));

Comment puis-je supprimer efficacement les valeurs nulles car la taille de la liste va être énorme?

Réponses

6 NikolasCharalambidis Nov 19 2020 at 17:48

Liste mutable

Vous pouvez utiliser List::removeIfavec un prédicat pour détecter des nulléléments.

List<Object[]> mutableList = new ArrayList<>(Arrays.asList(
    new Object[] {}, 
    null, 
    new Object[] {}));

mutableList.removeIf(Objects::isNull);

Liste immuable

Dans ce cas, vous devez utiliser l'API Stream ou une boucle for pour trouver des éléments non nuls et les ajouter à une nouvelle liste.

List<Object[]> immutableList = Arrays.asList(
    new Object[] {}, 
    null, 
    new Object[] {});

List<Object[]> newList = immutableList.stream()
                                      .filter(Objects::nonNull)
                                      .collect(Collectors.toList());