如何从列表中删除空列表(Java)

我已经搜索了这个,但它是在其他语言,如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的equals方法实现,所以如果你有类似下面的代码,它将失败。

 public class AnotherList extends ArrayList { @Override public boolean equals(Object o) { return o instanceof AnotherList && super.equals(o); } } List> list = new ArrayList<>(); list.add(Arrays.asList("abc", "def")); list.add(Arrays.asList("ghi")); list.add(new ArrayList()); list.add(new ArrayList()); list.add(new AnotherList()); list.add(null); list.add(Arrays.asList("jkl", "mno")); 

一个解决方案是:

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

如果您不担心equals方法的不同实现,则可以使用其他解决方案。