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

时间:2015-02-12 03:59:24

标签: java 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。

我做错了什么?

2 个答案:

答案 0 :(得分:0)

您正设置在arraylist中不存在的位置,可能是您需要&#34;添加&#34;。

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());

    }

}

您还需要创建A类对象,不能设置A.

答案 1 :(得分:0)

我猜你可能会得到java.lang.IndexOutOfBoundsException。这是因为在matrix.add(new ArrayList<A>());新添加的ArrayList&gt;大小为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。