为了账号安全,请及时绑定邮箱和手机立即绑定

ArrayList的初始大小

ArrayList的初始大小

哔哔one 2019-09-19 10:46:04
您可以通过执行设置ArrayList的初始大小ArrayList<Integer> arr=new ArrayList<Integer>(10);但是,你做不到arr.add(5, 10);因为它会导致越界异常。如果您无法访问分配的空间,设置初始大小有什么用?add函数定义为add(int index, Object element)我没有添加到索引10。
查看完整描述

3 回答

?
紫衣仙女

TA贡献1839条经验 获得超15个赞

您将数组列表的大小与其容量混淆:


的大小是在列表中的元素的数目;

的容量是多少元素列表可以潜在地容纳而不重新分配其内部结构。

当您拨打电话时new ArrayList<Integer>(10),您正在设置列表的初始容量,而不是其大小。换句话说,当以这种方式构造时,数组列表的生命空白。


将十个元素添加到数组列表的一种方法是使用循环:


for (int i = 0; i < 10; i++) {

  arr.add(0);

}

完成此操作后,您现在可以修改索引0..9处的元素。


查看完整回答
反对 回复 2019-09-19
?
偶然的你

TA贡献1841条经验 获得超3个赞

如果您想要一个具有预定义大小的列表,您还可以使用:


List<Integer> arr = Arrays.asList(new Integer[10]);


查看完整回答
反对 回复 2019-09-19
?
吃鸡游戏

TA贡献1829条经验 获得超7个赞

容量的ArrayList是不一样的大小。大小等于ArrayList(和任何其他List实现)中包含的元素数量。


的容量是其用于存储internaly的元素的底层阵列的只是长度ArrayList,并且是始终大于或等于大小列表。


在调用set(index, element)列表时,它index与列表元素的实际数量(=大小)(在代码中为零,因此AIOOBE被抛出)有关,而与数组长度(=容量)无关(这是一个特定的实现细节)到ArrayList)。


该set方法对于所有List实现是通用的,例如LinkedList,实际上不是由数组实现,而是作为链接的条目链。


编辑:你实际上使用的add(index, element)方法不是set(index, element),但原理在这里是相同的。


查看完整回答
反对 回复 2019-09-19
  • 3 回答
  • 0 关注
  • 2222 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信