如何检查数组2D(arrayList的arrayList)是否包含空值数组?

时间:2014-06-20 08:14:22

标签: java arraylist multidimensional-array

我有一个arrayList的arrayList,我想检查一个数组(subList)是否包含null值。问题是当第一个subList包含所有null时,它可以工作,但如果它是第二个subList,它就不起作用,因为第一个subList包含一个对象o

ArrayList<ArrayList<Type>> array = new ArrayList<ArrayList<Type>>();    
ArrayList<Type> subList = new ArrayList<Type>();

        for (int i = 0; i <= array.size(); i++) {
            subList=array.get(i);
            if (subList != null) {
                for (Object o : subList) {
                    if (o != null)
                        return false;
                }
            }
        }       
        return true;

我弄明白:

if (o != null)
   return false;

让循环消失。那么如何继续循环

编辑:

public boolean containsOnlyNull(ArrayList<Type> subList) {
        for (Object o : subList) {
            if (o != null)
                return false;
        }
        return true;
    }


public boolean isEmpty() {


        ArrayList<Type> subList = new ArrayList<Type>();

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

    }

1 个答案:

答案 0 :(得分:0)

您可以使用标志而不是return语句:

ArrayList<ArrayList<Type>> array = new ArrayList<ArrayList<Type>>();    
ArrayList<Type> subList = new ArrayList<Type>();
boolean hasObject = false;
for (int i = 0; i <= array.size(); i++) {
    subList=array.get(i);
    if (subList != null) {
        for (Object o : subList) {
            if (o != null)
                        hasObject = true;
            }
        }
    }       
    return hasObject;

在此版本中,如果在其中一个列表中出现null元素,则返回true。

但更简单的解决方案是将内循环提取到另一个方法然后使用return语句。

 private boolean containsOnlyNull(List<Type list) {
   //boolean allNull = true;
    for (Object o : subList) {
        if (o != null)
          //allNull = false;
            return false;
        }
    }
  //return allNull;
    return true;
}

你的方法:

ArrayList<ArrayList<Type>> array = new ArrayList<ArrayList<Type>>();    
ArrayList<Type> subList = new ArrayList<Type>();
boolean hasObject = false;
for (int i = 0; i <= array.size(); i++) {
    subList=array.get(i);
    if (subList != null) {
        if (!containsOnlyNull(subList)) return false; //or whatever the semantic is
    }
}       
return true;