猿问

ArrayList的初始大小

您可以通过执行设置ArrayList的初始大小


ArrayList<Integer> arr=new ArrayList<Integer>(10);

但是,你做不到


arr.add(5, 10);

因为它会导致越界异常。


如果您无法访问分配的空间,设置初始大小有什么用?


add函数定义为add(int index, Object element)我没有添加到索引10。


哔哔one
浏览 2223回答 3
3回答

紫衣仙女

您将数组列表的大小与其容量混淆:的大小是在列表中的元素的数目;的容量是多少元素列表可以潜在地容纳而不重新分配其内部结构。当您拨打电话时new ArrayList<Integer>(10),您正在设置列表的初始容量,而不是其大小。换句话说,当以这种方式构造时,数组列表的生命空白。将十个元素添加到数组列表的一种方法是使用循环:for (int i = 0; i < 10; i++) {&nbsp; arr.add(0);}完成此操作后,您现在可以修改索引0..9处的元素。

偶然的你

如果您想要一个具有预定义大小的列表,您还可以使用:List<Integer> arr = Arrays.asList(new Integer[10]);

吃鸡游戏

容量的ArrayList是不一样的大小。大小等于ArrayList(和任何其他List实现)中包含的元素数量。的容量是其用于存储internaly的元素的底层阵列的只是长度ArrayList,并且是始终大于或等于大小列表。在调用set(index, element)列表时,它index与列表元素的实际数量(=大小)(在代码中为零,因此AIOOBE被抛出)有关,而与数组长度(=容量)无关(这是一个特定的实现细节)到ArrayList)。该set方法对于所有List实现是通用的,例如LinkedList,实际上不是由数组实现,而是作为链接的条目链。编辑:你实际上使用的add(index, element)方法不是set(index, element),但原理在这里是相同的。
随时随地看视频慕课网APP

相关分类

Java
我要回答