我有一个具有指定最大容量M的ArrayList数组,我想通过填充零值来初始化该数组。因此,我使用以下代码:
for(int i = 0; i < array.size(); i++) {
array.add(i, 0);
}
然而,这不起作用。我得到一个indexOutOfBoundsException:索引:0,大小:0
实际上,我在该循环之后打印了数组,以便测试它是否填充了值,但结果是一个空数组:[]。
显然,我不知道有一些重要的概念。我确信解决方案很简单但我错过了这个概念的一些基本见解。
答案 0 :(得分:9)
要初始化一个包含100个零的ArrayList:
ArrayList<Integer> list = new ArrayList<Integer>(Collections.nCopies(100, 0));
答案 1 :(得分:3)
将array.add(i, 0)
更改为array.add(0);
。
除非ArrayList
的大小更大或相等,否则不能添加到那些指定的索引,因为这些索引不存在。
此外,您还必须更改for
循环,因为它的大小不是100;它是0.这是因为当你声明array = new ArrayList<Integer>(100)
时,你只是指定应该为它保留多少内存 - 而不是它的大小。它的大小仍为0,只有在添加元素时才会增长。
答案 2 :(得分:2)
在初始化arraylist
之后,您还可以通过此代码将列表设为0值for (int i = 0; i < 60; i++) {
list.add(0);
}