检查ArrayList是否仅包含空值的方法

时间:2011-06-05 14:08:26

标签: java android

我正在查看我的旧Android应用程序的代码,我看到我做了一件事就是这样:

        boolean emptyArray = true;
        for (int i = 0; i < array.size(); i++)
        {
            if (array.get(i) != null)
            {
                    emptyArray = false;
                    break;
            }
        }
        if (emptyArray == true)
        {
            return true;
        }
        return false;

必须有一种更有效的方法 - 但它是什么?

emptyArray被定义为整数的ArrayList,它插入随机数的空值(稍后在代码中,实际的整数值)。

谢谢!

5 个答案:

答案 0 :(得分:20)

嗯,你可以为初学者使用更少的代码:

public boolean isAllNulls(Iterable<?> array) {
    for (Object element : array)
        if (element != null) return false;
    return true;
}

使用此代码,您也可以传递更多种类的集合。


Java 8更新:

public static boolean isAllNulls(Iterable<?> array) {
    return StreamSupport.stream(array.spliterator(), true).allMatch(o -> o == null);
}

答案 1 :(得分:6)

没有更有效的方法。 唯一能做的就是以更优雅的方式写出来:

List<Something> l;

boolean nonNullElemExist= false;
for (Something s: l) {
  if (s != null) {
     nonNullElemExist = true;
     break;
  }
}

// use of nonNullElemExist;

实际上,这可能会更高效,因为它使用Iterator并且Hotspot编译器有更多信息要使用size()get()进行优化。

答案 2 :(得分:0)

未检测到仅包含null,但它可能足以在您的列表中使用contains(null)方法。

答案 3 :(得分:0)

简单地检查它是否对我有用。希望也能为您服务!

    if (arrayListSubQues!=null){
return true;}
else {
return false }

答案 4 :(得分:-1)

我习惯做这样的事情:

// Simple loop to remove all 'null' from the list or a copy of the list
while array.remove(null) {
    array.remove(null);
}

if (CollectionUtils.isEmpty(array)) {
    // the list contained only nulls
}