如何创建一个在每个元素中包含一个ArrayList的列表的三维数组?
我需要外部对象(数组本身)是“静态的”,并且由于其可能会自行调整大小,因此无法使用arraylist。每个元素的内部列表都需要定期调整大小,这就是为什么我需要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;
}
要修复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>());
}