检查arraylist是否仅包含空值

时间:2013-01-04 18:09:57

标签: java arraylist

我认为必须有更好的方法来做到这一点。 我调用了一个返回ArrayList的函数。 如果那个ArrayList只返回10个空项(默认值),有没有办法检查它而不迭代所有10个项目以查看它们是否为空?

6 个答案:

答案 0 :(得分:7)

一般来说,没有;没有其他方法可以告诉任意ArrayList包含10个null个实例,而不是循环它并确保每个元素都是null。当然,如果列表的大小()不等于10,你可以放弃这一点。

答案 1 :(得分:7)

从Java 8开始,您可以像这样使用How to make ConstraintLayout work with percentage values?

boolean nullsOnly = list.stream().noneMatch(Objects::nonNull);

等于:

boolean nullsOnly = list.stream().allMatch(x -> x == null)

在这里,您可以看到测试任何列表与给定Streams匹配的更一般的方法:

list.stream().allMatch(x -> /* Some testing function. */)

答案 2 :(得分:2)

您是否尝试检查ArrayList是否为空? (即myArrayList.isEmpty())或者您是否正在尝试检查ArrayList是否仅包含空引用?如果您正在尝试检查所有条目是否为空,那么您需要检查每个条目...

boolean isListOfNulls(List myList){
    for(Object o: myList)
        if(!(o == null))
            return false;
    return true;
}

答案 3 :(得分:2)

List<Object> arrayList = new ArrayList<Object>();

arrayList.isEmpty();
// first call returns true    

arrayList.add(null);
// second call returns false    
Object obj = new Object();

arrayList.add(obj);

arrayList.isEmpty();
// third call returns false

这就是你想要的吗?

多次添加空值会将大小增加一,但是没有一个简单的方法&#34;除非循环数组列表,否则找到空对象的数量。

答案 4 :(得分:0)

将默认值更改为空ArrayList并使用isEmpty()。目前的默认是毫无意义的。

答案 5 :(得分:0)

尝试使用流API。

boolean haveOnlyNulls = arraylist.stream().noneMatch(object -> object != null);