Arraylist в массиве списков - Java - PullRequest
0 голосов
/ 13 апреля 2020

Как мне go создать 3-мерный массив списков, который содержит ArrayList в каждом элементе?

Мне нужно, чтобы внешний объект, сам массив, был "stati c" и не может использовать arraylist из-за его склонности к изменению размера. Ожидается, что внутренние списки в каждом элементе будут регулярно меняться, поэтому мне нужен массив.

Теоретически приведенный ниже код выглядит правильно. Однако при запуске выдается исключение нулевого указателя.

public List<ArrayList<Algae>>[][][] populate(int val, int size)
    {
        List<ArrayList<Algae>>[][][] pond = new List[size][size][size];
        for (int i = 0; i < size; i++)
        {
            for(int j = 0; j < size; j++)
            {
                for(int k = 0; k < size; k++)
                {
                    pond[i][j][k].add(new ArrayList<Algae>(2));
                }
            }
        }
        for (int i = 0; i < size; i++)
        {
            for(int j = 0; j < size; j++)
            {
                for(int k = 0; k < size; k++)
                {
                    for(int c = 0; c < val; c++)
                    {
                        pond[i][j][k].get(0).add(new Algae());
                    }
                }
            }
        }
        return pond;
    }

1 Ответ

0 голосов
/ 13 апреля 2020

Чтобы исправить NPE, вы должны инициализировать самый внутренний элемент массива:

                for(int k = 0; k < size; k++)
                {
                    pond[i][j][k] = new ArrayList<ArrayList<Algae>>(2);
                    pond[i][j][k].add(new ArrayList<Algae>());
                }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...