Java: eliminar nulo de la lista de objetos [duplicado]

Nov 19 2020

Tengo un objeto de lista java de gran tamaño de la siguiente manera:

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

Tengo que eliminar los nulos del objeto res.

Probé los siguientes métodos hasta ahora, pero nada parecía funcionar:

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

¿Cómo puedo eliminar los nulos de manera eficiente si el tamaño de la lista será enorme?

Respuestas

6 NikolasCharalambidis Nov 19 2020 at 17:48

Lista mutable

Puede utilizar List::removeIfcon un predicado que detecte nullelementos.

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

mutableList.removeIf(Objects::isNull);

Lista inmutable

En este caso, debe usar Stream API o un bucle for para encontrar elementos no nulos y agregarlos a una nueva lista.

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

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