尝试在多维 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。
我很难弄清楚如何将对象添加到 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。