【问题标题】:IndexofBoundsException is thrown when initializing array of List<E> [duplicate]初始化 List<E> 数组时引发 IndexofBoundsException [重复]
【发布时间】:2020-03-19 17:01:06
【问题描述】:

我是 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() 返回真; 我有 Java.lang.IndexofBoundsException 行 dp.set()...

我想在 new 之后.. dp 已经有 N+1 个条目,但结果是错误的..dp 仍然是空的..

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

【问题讨论】:

标签: java arraylist


【解决方案1】:

当你写new ArrayList&lt;List&lt;TreeNode&gt;&gt;(N + 1);时,这告诉java创建arraylist,初始大小为N + 1元素。

当你添加元素时,arraylist 会动态增加,这个数字也会在内部增加。

这里,N+1不代表List中有N+1元素,只是表示N+1内存是由List分配的。

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-02-25
    • 2012-05-30
    • 2014-10-13
    • 2011-02-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多