Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从列表中删除空列表(Java)_Java_List_Arraylist - Fatal编程技术网

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

如何从列表中删除空列表(Java),java,list,arraylist,Java,List,Arraylist,我已经搜索过了,但它是用Python或R(?)等其他语言编写的。 我有一个列表中的列表,我想删除空列表。 例如: [[abc,def],[ghi],[],[jkl,mno]] 我想: [abc,def],[ghi],[jkl,mno]] 如何从列表中删除空列表? 谢谢 您可以使用: list.removeAll(Collections.singleton(new ArrayList<>())); list.removeAll(Collections.singleton(newarr

我已经搜索过了,但它是用Python或R(?)等其他语言编写的。 我有一个列表中的列表,我想删除空列表。 例如:

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

我想:

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

如何从列表中删除空列表? 谢谢

您可以使用:

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

您也可以尝试以下方法:

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

如果您不担心equals方法的不同实现,您可以使用另一种解决方案。

我会尝试
list.removeAll(new ArrayList())@Kon no它不起作用为什么null或“”与空列表匹配?你似乎对这里发生的事情有一个非常奇怪和错误的想法。你能再详细一点并解释一下里面发生了什么吗?或者
.removeAll(Collections.singleton(Collections.emptyList())
这是一个比公认的答案好得多的选择,它的意图要明显得多。但是,如果你有这个选择的话[,此答案将返回NullPointerException,也可以这样编写:
list.removeIf(list::isEmpty)
java.util.List的契约实际上指定了
equals
的精确行为,以保证这个问题不会发生。当然,这个契约的这一方面不能由编译器强制执行;但是,在您的示例中,问题是
另一个列表
违反了。这个缺陷应该是固定的,而不是变通的;或者,如果不能做到这一点,则在需要
列表
阵列列表
时,不应使用它的实例。
list.removeAll(Collections.singleton(new ArrayList<>()));
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());