可以通过以下操作设置ArrayList的初始大小:

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

然而,你不能这样做

arr.add(5, 10);

因为它会导致越界异常.

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

add函数被定义为add(int index, Object element),所以我不会将其添加到索引10中.

推荐答案

你把数组列表的大小和它的容量搞混了:

  • size是列表中元素的数量;
  • capacity是列表在不重新分配其内部 struct 的情况下可以潜在容纳的元素数量.

当您呼叫new ArrayList<Integer>(10)时,您设置的是列表的初始capacity,而不是其大小.换句话说,当以这种方式构造数组列表时,数组列表的生命周期是空的.

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

for (int i = 0; i < 10; i++) {
  arr.add(0);
}

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

Java相关问答推荐

Spring bootstrap @ Asmat注释与@ Routed

Java应用程序崩溃时试图读取联系人从电话

Java中不同包中的类之间的配置共享

Java自定义ThreadPool—暂停任务提交并取消当前排队任务

尽管类型擦除,instanceof与泛型在Java中如何工作?

Android Studio—java—在onBindViewHolder中,将断点和空白添加到BackclerView中

使用Spring Boot3.2和虚拟线程的并行服务调用

自定义批注的外推属性值

如何为JavaFX Spring Boot应用程序制作Windows/MacOS/Linux安装程序

如何在列表(链表)中插入一个新 node (作为prelast)

删除打印语句会影响功能...腐败在起作用?

如何生成指定范围内的11位序列号?

在缺少字段时使用Jackson With Options生成Optional.Empty()

Java CDI:@Singleton@Startup@Inject无法实现接口

当我将JTextField的getText函数与相等的String进行比较时;t返回true

让标签占用JavaFX中HBox的所有可用空间

验证没有';t work on Hibernate Entity';s字段

Java返回生成器的实现

没有Google Play服务,Firebase Auth无法工作

spring 更新多项管理关系