Ответ 1
Вы также можете попробовать:
list.removeIf(p -> p.isEmpty());
Я искал это, но это на других языках, таких как Python или R (?). У меня есть списки внутри списка, и я хотел бы удалить пустой список. Например:
[[abc, def], [ghi], [], [], [jkl, mno]]
Я бы хотел:
[[abc, def], [ghi], [jkl, mno]]
Как удалить пустой список из списка? Спасибо!
Вы также можете попробовать:
list.removeIf(p -> p.isEmpty());
Вы можете использовать:
list.removeAll(Collections.singleton(new ArrayList<>()));
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, вы можете использовать другое решение.