gpt4 book ai didi

java - ArrayList 的 Set 方法抛出 IndexOutOfBoundsException

转载 作者:搜寻专家 更新时间:2023-10-30 20:58:19 24 4
gpt4 key购买 nike

在处理 ArrayList 时,我发现在使用带有 initialCapacity 的构造函数设置数组的初始大小后,然后使用 set() 将尽管创建了数组,但抛出异常,但未正确设置大小。

使用 ensureCapacity() 也不起作用,因为它基于 elementData 数组而不是 size

由于 ensureCapacity() 的静态 DEFAULT_CAPACITY 还有其他副作用。

实现此功能的唯一方法是在使用构造函数后根据需要多次使用 add()。

请检查下面的代码。

import java.util.ArrayList;
import java.util.List;

public class Test {

public static void main(String[] args) {

List test = new ArrayList(10);
test.set(5, "test");
System.out.println(test.size());
}

我不确定为什么 java 会抛出这个异常。

我预期的行为:test.size() 应该返回 10 并且 set(5, ...) 应该工作。

ACTUAL:抛出异常 IndexOutOfBoundsException

那么是 set 方法导致了问题吗?

最佳答案

test.set(5, "test"); 是抛出这个异常的语句,因为你的 ArrayList 是空的(size() 将返回 0 如果你到达那个语句),并且如果第 i 个元素还没有包含值,你不能设置它。您必须向 ArrayList 添加至少 6 个元素,才能使 test.set(5, "test"); 有效。

new ArrayList(10) 不会创建大小为 10 的 ArrayList。它会创建一个初始容量为 10 的空 ArrayList .

关于java - ArrayList 的 Set 方法抛出 IndexOutOfBoundsException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34526362/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com