我是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
答案 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