初始化List <E>的数组时引发IndexofBoundsException

时间:2019-11-24 03:06:35

标签: java arraylist

我是Java新手,具有以下代码。

List<List<TreeNode>> dp = new ArrayList<List<TreeNode>>(N + 1);
System.out.println(dp.isEmpty());

for (int i = 0; i <= N; i++) {
    dp.set(i, new ArrayList<TreeNode>());
}

dp.isEmpty()返回true; 我有dp.set()行的Java.lang.IndexofBoundsException ...

我以为新的.. dp已经有N + 1个条目,但结果却是错误的.... dp仍然为空。.

那么如何用N + 1个arraylist填充dp

1 个答案:

答案 0 :(得分:2)

在编写new ArrayList<List<TreeNode>>(N + 1);时,这是在告诉Java创建arraylist,其初始大小为N + 1个元素。

随着arraylist在添加元素时动态增加,该数字也在内部增加。

在这里,N+1并不意味着N+1中有List个元素,它只是意味着N+1的内存是由List分配的。

要添加元素,您需要执行以下操作

for (int i = 0; i <= N; i++) {
    dp.add(i, new ArrayList<TreeNode>());
}

System.out.println(dp.isEmpty()); // false here