Java - Remover nulo da lista de objetos [duplicado]

Nov 19 2020

Eu tenho um objeto de lista java de tamanho enorme, como segue:

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

Tenho que remover nulos do objeto res.

Eu tentei os métodos abaixo até agora, mas nada parecia funcionar:

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

Como posso remover nulos de forma eficiente, pois o tamanho da lista será enorme?

Respostas

6 NikolasCharalambidis Nov 19 2020 at 17:48

Lista mutável

Você pode usar List::removeIfcom um predicado de detecção de nullitens.

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

mutableList.removeIf(Objects::isNull);

Lista imutável

Nesse caso, você deve usar a API Stream ou um loop for para localizar elementos não nulos e adicioná-los a uma nova lista.

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

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