2015-02-12 54 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。

相關問題