在ArrayList中查找数字

时间:2012-01-02 14:13:38

标签: java arraylist nullpointerexception

有一个ArrayList“allVariables”包含一个整数数组。我需要查找此数组是否包含数字1.如果是,则答案应为false,否则为true。

我写了一些代码,但结果是java.lang.NullPointerException

private boolean notIncluded(int ind, ArrayList<Color> c) {
    ArrayList<Integer[]> allVariables = new ArrayList<Integer[]>();
        // Filling the ArryList

    for (int k = 0; k < c.size(); k++) {
        allVariables.add(c.get(k).getColor()); // returns Integer[]
    }

    if (Arrays.asList(allVariables).contains(1)) {
        return false;
    }

    return true;
}

4 个答案:

答案 0 :(得分:1)

对于包容性检查,请勿使用List数据结构。这正是我们Set(或者更具体地说是HashSet)的原因。

如果您可以找到将ind映射到Color实例的方法,则可以快速进行“包含”检查。

答案 1 :(得分:1)

尝试对cc.get(k)执行空检查。

答案 2 :(得分:1)

Arrays.asList(allVariables):allVariables不是一个数组,它是一个数组列表!

答案 3 :(得分:1)

您需要在代码中检查空值。下面的代码尝试实现您需要的内容并检查进程中的空值:

public function allVariablesContains(List<Integer[]> allVariables, int intToSearchFor)
{
    if (allVariables == null)
        return false;
    for (int i = 0; i < allVariables.Length; i++)
    {
        if (allVariables[i] == null)
            continue;
        if (Arrays.asList(allVariables).contains(intToSearchFor))
            return true;
    }
    return false;
}