java - 初始化 List<E> 数组时抛出 IndexofBoundsException

标签 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...

我以为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/

相关文章:

java - Java泛型语法之间的区别?

java - 将字节数组写入 UTF8 编码的文件

java - 更新cassandra数据库的问题和java问题

java - 如何从 spring-boot 千分尺检索指标

c# - 如何在 C# 中创建多维数组列表?

Java没有从文件中读取所有对象

java - 如何知道对象列表中出现次数最多的属性?

java - Spring Webflux 合并通量的类型安全性

java - 如何将 ArrayList<string> 传递到 BasicNameValuePair

java - 用于查找重复数组的 HashSet