我是 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...
我以为new后.. dp已经有N+1个条目,但结果是错误的....dp仍然是空的..
那么如何用N+1数组列表填充dp
最佳答案
当你写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
关于java - 初始化 List<E> 数组时抛出 IndexofBoundsException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59014286/