空ArrayList等于null

时间:2010-07-08 12:44:27

标签: java arrays arraylist

是否将空Arraylist(以null作为项目)视为null?所以,基本上下面的陈述是正确的:

if (arrayList != null) 

感谢

7 个答案:

答案 0 :(得分:69)

没有

ArrayList可以为空(或使用null作为项),不能为null。它会被认为是空的。您可以使用以下命令检查空ArrayList:

ArrayList arrList = new ArrayList();
if(arrList.isEmpty())
{
    // Do something with the empty list here.
}

或者,如果要创建一个检查仅具有空值的ArrayList的方法:

public static Boolean ContainsAllNulls(ArrayList arrList)
{
    if(arrList != null)
    {
        for(object a : arrList)
            if(a != null) return false;
    }

    return true;
}

答案 1 :(得分:22)

arrayList == null如果没有为变量ArrayList分配类arrayList的实例(请注意类的upercase和变量的小写)。

如果您在任何时候执行arrayList = new ArrayList(),那么arrayList != null因为指向了班级ArrayList的实例

如果您想知道列表是否为空,请执行

if(arrayList != null && !arrayList.isEmpty()) {
 //has items here. The fact that has items does not mean that the items are != null. 
 //You have to check the nullity for every item

}
else {
// either there is no instance of ArrayList in arrayList or the list is empty.
}

如果您不想在列表中使用空项,我建议您使用自己的类扩展ArrayList类,例如:

public class NotNullArrayList extends ArrayList{

@Override
public boolean add(Object o) 
   { if(o==null) throw new IllegalArgumentException("Cannot add null items to the list");
      else return super.add(o);
    }
}

或许你可以扩展它以在你自己的类中有一个方法来重新定义“空列表”的概念。

public class NullIsEmptyArrayList extends ArrayList{

@Override
public boolean isEmpty() 
   if(super.isEmpty()) return true;
   else{
   //Iterate through the items to see if all of them are null. 
   //You can use any of the algorithms in the other responses. Return true if all are null, false otherwise. 
   //You can short-circuit to return false when you find the first item not null, so it will improve performance.
  }
}

最后两种方法是面向对象,更优雅和可重用的解决方案。

更新与杰夫建议IAE而不是NPE。

答案 2 :(得分:5)

不,这不起作用。您可以做的最好的事情是遍历所有值并自己检查:

boolean empty = true;
for (Object item : arrayList) {
    if (item != null) {
        empty = false;
        break;
    }
}

答案 3 :(得分:2)

正如零是一个数字 - 只是一个代表无数的数字 - 空列表仍然是一个列表,只是一个没有任何内容的列表。 null根本没有名单;因此它与空列表不同。

类似地,包含空项的列表是一个列表,而不是是一个空列表。因为它里面有物品;这些项本身是无效的并不重要。例如,一个包含三个空值的列表,没有别的:它的长度是多少?它的长度为3.空列表的长度为零。当然,null没有长度。

答案 4 :(得分:1)

不,因为它包含项目,必须有一个实例。它的项为null是无关紧要的,因此statment((arrayList)!= null)== true

答案 5 :(得分:0)

首先,您可以通过编写一个简单的TestCase来验证这一点!

  

清空Arraylist(以空值作为项目)

其次,如果ArrayList是EMPTY,意味着真的是空,则它不能将NULL或NON-NULL事物作为元素。

第三,

 List list  = new ArrayList();
    list.add(null);
    System.out.println(list == null)

会打印错误。

答案 6 :(得分:0)

如果要检查数组是否包含具有空值的项,请使用:

private boolean isListOfNulls(ArrayList<String> stringList){
    for (String s: stringList)
        if( s != null) return false;
    return true;
}

您可以将<String>替换为ArrayList

的相应类型