Подтвердить что ты не робот

Как удалить пустой список из списка (Java)

Я искал это, но это на других языках, таких как Python или R (?). У меня есть списки внутри списка, и я хотел бы удалить пустой список. Например:

[[abc, def], [ghi], [], [], [jkl, mno]]

Я бы хотел:

[[abc, def], [ghi], [jkl, mno]]

Как удалить пустой список из списка? Спасибо!

4b9b3361

Ответ 1

Вы также можете попробовать:

list.removeIf(p -> p.isEmpty());

Ответ 2

Вы можете использовать:

list.removeAll(Collections.singleton(new ArrayList<>()));

Ответ 3

list.removeAll(Collections.singleton(new ArrayList<>()));

Приведенный выше код отлично подходит для многих случаев, но зависит от реализации метода равных значений List в списке, поэтому, если у вас есть что-то вроде кода ниже, он будет терпеть неудачу.

public class AnotherList extends ArrayList<String> {
    @Override
    public boolean equals(Object o) {
        return o instanceof AnotherList && super.equals(o);
    }
}

List<List<String>> list = new ArrayList<>();
list.add(Arrays.asList("abc", "def"));
list.add(Arrays.asList("ghi"));
list.add(new ArrayList<String>());
list.add(new ArrayList<String>());
list.add(new AnotherList());
list.add(null);
list.add(Arrays.asList("jkl", "mno"));

Решение:

list.removeIf(x -> x != null && x.isEmpty());

Если вы не беспокоитесь о другой реализации метода equals, вы можете использовать другое решение.