Java检查空ArrayList作为类结构

时间:2015-02-11 09:34:50

标签: java arraylist

我正在尝试创建类结构,如下例所示:

public class SubjectListStructure {
    public String topic_id;
    public String topic_title;
    public String created_date;
    public String avatar_url;
    public String vote;
    public String name_family;
}

现在,我想创建一个由这些对象组成的ArrayList:

ArrayList<SubjectListStructure> nSubjects = = new ArrayList<SubjectListStructure>();

但现在我无法检查nSubjects是否为空或者是否有类似此代码的数据:

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

    return true;
}

nSubjects.isEmpty()此解决方案和ContainsAllNulls(nSubjects)无法正确检查并返回错误的结果

1 个答案:

答案 0 :(得分:1)

首先,您不应该在列表中允许null。在这种情况下,只需List.isEmpty()即可告诉您列表是否为空。

如果您不能或不想禁止null,那么如果列表中只包含null,您的代码就会正常运行并进行正确测试。

您甚至不必将其与isEmpty()方法结合使用,因为增强的for也适用于空列表和数组(在这种情况下,for的正文将不会执行。)

你可以将你的代码概括为,这不仅适用于ArrayList,而且适用于所有Collection s(列表,集合等)以及任何元素类型不仅仅是您的自定义SubjectListStructure类型:

public static boolean emptyOrAllNulls(Collection<?> c) {
    if (c != null)
        for (Object o : c)
            if(o != null)
                return false;

    return true;
}    

请注意,增强型for使用Collection.iterator()获取Iterator来遍历集合的元素。在空集合的情况下,首先检查集合是否包含任何元素而不是通过迭代器是更有效的:

public static boolean emptyOrAllNulls(Collection<?> c) {
    if (c != null && !c.isEmpty())
        for (Object o : c)
            if(o != null)
                return false;

    return true;
}