簡體   English   中英

嘗試在多維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。

我究竟做錯了什么?

您正設置在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類對象,不能設置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中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM