我有一个指定最大容量M的ArrayList数组,我想通过填充零值来初始化该数组。因此,我使用以下代码:
for(int i = 0; i < array.size(); i++) {
array.add(i, 0);
}
然而,这并不起作用。我收到了一个indexOutOfBoundsException异常:Index: 0, Size: 0。
确实,在循环之后我打印了数组,以测试它是否填充了值,但结果是一个空数组:[]。
显然,有一些重要的概念我不知道。我相信解决方案很简单,但我缺乏这个概念的基本见解。
ArrayList
,它的 容量 和 大小 之间是有区别的。你应该查看文档来了解这一点。 - Rohit Jainadd
操作会将新元素添加到数组末尾。在您的情况下,这与您使用索引的操作是相同的。 - truthealityArrayList
存储一个普通的对象数组 (Object[]
)。该数组的大小是当前容量。如果您尝试添加更多元素到ArrayList
,它将分配一个新的对象数组,其容量是原来的两倍(这时会占用存储空间),然后将元素从旧数组复制到新数组(这是性能损失),然后容量变为新内部数组的大小(容量增加)。如果您事先知道将有多少个对象,可以指定正确的初始容量以防止发生这种情况。 - trutheality