2015-02-12 51 views
0

我很难判断如何将对象添加到ArrayList的ArrayList。尝试在多维ArrayList中设置元素时出现NullPointerException

当我尝试:

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。

我在做什么错?

+1

我不相信你会得到一个NPE。 – 2015-02-12 04:08:29

回答

0

您正在设置不在arraylist中的位置,可能是您需要“添加”。

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.

0

我猜你可能会得到java.lang.IndexOutOfBoundsException。这是因为matrix.add(new ArrayList<A>());之后新添加的ArrayList的大小为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具有大小为0,java.lang.IndexOutOfBoundsException被抛出。

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

相关问题