Java - Usuń null z listy obiektów [duplikat]

Nov 19 2020

Mam ogromny obiekt listy java w następujący sposób:

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

Muszę usunąć wartości null z obiektu res.

Próbowałem do tej pory poniższych metod, ale wydawało się, że nic nie działa:

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

Jak skutecznie usuwać wartości null, skoro rozmiar listy będzie ogromny?

Odpowiedzi

6 NikolasCharalambidis Nov 19 2020 at 17:48

Lista modyfikowalna

Można go używać List::removeIfz predykatem wykrywającym nullelementy.

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

mutableList.removeIf(Objects::isNull);

Niezmienna lista

W takim przypadku musisz użyć Stream API lub pętli for, aby znaleźć elementy niezerowe i dodać je do nowej listy.

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

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