Java - Удалить null из списка объектов [дубликат]

Nov 19 2020

У меня есть объект списка java огромного размера:

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

Мне нужно удалить нули из объекта res.

Я пробовал ниже методы, но ничего не работало:

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

Как я могу эффективно удалить нули, если размер списка будет огромным?

Ответы

6 NikolasCharalambidis Nov 19 2020 at 17:48

Изменяемый список

Вы можете использовать List::removeIfс предикатом, определяющим nullэлементы.

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

mutableList.removeIf(Objects::isNull);

Неизменяемый список

В этом случае вам нужно использовать Stream API или цикл for, чтобы найти ненулевые элементы и добавить их в новый список.

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

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