Найти номер в ArrayList - PullRequest
       4

Найти номер в ArrayList

1 голос
/ 02 января 2012

Существует ArrayList "allVariables", которые содержат массив целых чисел.Мне нужно найти, содержит ли этот массив число 1. Если это так, ответ должен быть ложным, в противном случае - истиной.

Я написал некоторый код, но это приводит к 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 ]

1 голос
/ 02 января 2012

Вам необходимо проверить наличие нулей в вашем коде.Следующий фрагмент кода пытается реализовать то, что вам нужно, и проверяет наличие нулей в процессе:

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;
}
1 голос
/ 02 января 2012

Попробуйте выполнить нулевую проверку для c и c.get(k).

1 голос
/ 02 января 2012

Arrays.asList(allVariables): allVariables - это не массив, это список массивов!

1 голос
/ 02 января 2012

Для проверок сдерживания не используйте структуру данных List.Именно поэтому у нас есть Set (или, точнее, HashSet в вашем случае).

Если вы можете найти способ сопоставить ind с Color экземпляром, вы можете получить очень быстропроверки «включения».

...