3 回答
TA贡献1839条经验 获得超15个赞
您将数组列表的大小与其容量混淆:
的大小是在列表中的元素的数目;
的容量是多少元素列表可以潜在地容纳而不重新分配其内部结构。
当您拨打电话时new ArrayList<Integer>(10),您正在设置列表的初始容量,而不是其大小。换句话说,当以这种方式构造时,数组列表的生命空白。
将十个元素添加到数组列表的一种方法是使用循环:
for (int i = 0; i < 10; i++) {
arr.add(0);
}
完成此操作后,您现在可以修改索引0..9处的元素。
TA贡献1841条经验 获得超3个赞
如果您想要一个具有预定义大小的列表,您还可以使用:
List<Integer> arr = Arrays.asList(new Integer[10]);
TA贡献1829条经验 获得超7个赞
容量的ArrayList是不一样的大小。大小等于ArrayList(和任何其他List实现)中包含的元素数量。
的容量是其用于存储internaly的元素的底层阵列的只是长度ArrayList,并且是始终大于或等于大小列表。
在调用set(index, element)列表时,它index与列表元素的实际数量(=大小)(在代码中为零,因此AIOOBE被抛出)有关,而与数组长度(=容量)无关(这是一个特定的实现细节)到ArrayList)。
该set方法对于所有List实现是通用的,例如LinkedList,实际上不是由数组实现,而是作为链接的条目链。
编辑:你实际上使用的add(index, element)方法不是set(index, element),但原理在这里是相同的。
添加回答
举报