sw2*_*sw2 11 java list arraylist
我已经搜索了这个,但它在其他语言中,如Python或R(?).我在列表中有列表,我想删除空列表.例如:
[[abc,def],[ghi],[],[],[jkl,mno]]
我想要:
[[abc,def],[ghi],[jkl,mno]]
如何从列表中删除空列表?谢谢!
Mic*_*cho 25
你也可以试试这个:
list.removeIf(p -> p.isEmpty());
Run Code Online (Sandbox Code Playgroud)
Ale*_*tes 12
你可以使用:
list.removeAll(Collections.singleton(new ArrayList<>()));
Run Code Online (Sandbox Code Playgroud)
Rod*_*lfo 11
list.removeAll(Collections.singleton(new ArrayList<>()));
Run Code Online (Sandbox Code Playgroud)
上面的代码适用于许多情况,但它依赖于列表中List 的equals方法实现,所以如果你有类似下面的代码,它将失败.
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"));
Run Code Online (Sandbox Code Playgroud)
解决方案是:
list.removeIf(x -> x != null && x.isEmpty());
Run Code Online (Sandbox Code Playgroud)
如果您不担心equals方法的不同实现,则可以使用其他解决方案.