空数组列表等于空
空数组列表(以 null 作为其项)是否被视为 null?因此,基本上以下陈述是正确的:
if (arrayList != null)
谢谢
空数组列表(以 null 作为其项)是否被视为 null?因此,基本上以下陈述是正确的:
if (arrayList != null)
谢谢
不。
ArrayList 可以是空的(或将 null 作为项),也可以不是 null。它将被视为空的。您可以使用以下命令检查 am empty ArrayList:
ArrayList arrList = new ArrayList();
if(arrList.isEmpty())
{
// Do something with the empty list here.
}
或者,如果要创建一个检查仅包含 null 的 ArrayList 的方法:
public static Boolean ContainsAllNulls(ArrayList arrList)
{
if(arrList != null)
{
for(object a : arrList)
if(a != null) return false;
}
return true;
}
arrayList == null
如果没有分配给变量的类的实例(请注意类的上写字母和变量的小写字母)。ArrayList
arrayList
如果在任何时候,你这样做,那么因为 指向类的实例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.
}
}
最后两种方法是更面向对象,更优雅和可重用的解决方案。
使用 Jeff 建议 IAE 而不是 NPE 进行了更新。