【发布时间】:2016-04-04 05:47:34
【问题描述】:
在处理ArrayList 时,我发现在使用initialCapacity 的构造函数设置数组的初始大小后,然后使用set() 会抛出异常,尽管数组已创建,但大小设置不正确。
使用ensureCapacity() 也不起作用,因为它基于elementData 数组而不是size。
由于DEFAULT_CAPACITY 与ensureCapacity() 之间的静态关系,还有其他副作用。
完成这项工作的唯一方法是在使用构造函数后根据需要多次使用 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, ...) 应该可以工作。
实际:抛出异常 IndexOutOfBoundsException。
那么是设置方法导致问题吗?
【问题讨论】:
-
这里没有“
ArrayList.size()”的特殊行为。你甚至没有到达那里。 -
好的,改标题
-
我不相信那里提供的答案,我认为 ERAN 提供的答案更简单且不言自明。因此不是重复的
-
这是stackoverflow.com/questions/8896758/…中更清晰的问答的副本