尝试在多维 ArrayList 中设置元素时出现 NullPointerException

NullPointerException when trying to set an element in a multidimensional ArrayList

我很难弄清楚如何将对象添加到 ArrayList 的 ArrayList。

当我尝试时:

ArrayList<ArrayList<A>> matrix = new ArrayList<ArrayList<A>>();

matrix.add(new ArrayList<A>());
matrix.add(new ArrayList<A>());
matrix.add(new ArrayList<A>());

matrix.get(0).set(0, A);

我收到 NullPointerException。

我做错了什么?

您正在设置数组列表中不存在的位置,可能您需要 "add"。

import java.util.ArrayList;

class A{}

public class arrlst {

    public static void main(String[] args) {
        ArrayList<ArrayList<A>> matrix = new ArrayList<ArrayList<A>>();

        matrix.add(new ArrayList<A>());
        matrix.add(new ArrayList<A>());
        matrix.add(new ArrayList<A>());

        /*matrix.get(0).set(1, new A());*/
        matrix.get(0).add(new A());

    }

}

还需要创建classA​​的对象,不能设置A.

我猜你可能会得到 java.lang.IndexOutOfBoundsException。那是因为在 matrix.add(new ArrayList<A>()); 之后新增的 ArrayList 的 Size 为 0。 set 方法在将元素设置在上述位置之前首先检查 AraayList 的大小。

public E set(int paramInt, E paramE) { RangeCheck(paramInt); Object localObject = this.elementData[paramInt]; this.elementData[paramInt] = paramE; return localObject; }

private void RangeCheck(int paramInt) { if (paramInt < this.size) return; throw new IndexOutOfBoundsException("Index: " + paramInt + ", Size: " + this.size); }

由于新添加的ArrayList的Size为0,抛出java.lang.IndexOutOfBoundsException

因此,在设置元素之前,确保使用 add 方法将元素添加到 ArrayList。