Java中的ArrayList的初始容量和容量分配

本文详细分析了Java中ArrayList的初始容量、容量分配机制,包括构造方法中的默认值和用户指定值。在add()方法中,当添加元素导致容量不足时,ArrayList会按一定比例扩容。在remove()方法中,删除元素后,不会立即缩小容量,但可以通过ensureCapacityInternal来调整。此外,文章还探讨了如何通过指定容量来优化性能。
摘要由CSDN通过智能技术生成

if (elementData.getClass() != Object[].class)

elementData = Arrays.copyOf(elementData, size, Object[].class);

}

二、ArrayList实现自动改变size机制

为了实现这一机制,java引进了Capacity和size概念,以区别数组的length。为了保证用户增加新的列表对象,java设置了最小容量(minCapacity)

,通常情况上,它大于列表对象的数目,所以Capactiy虽然就是底层数组的长度(length),但是对于最终用户来讲,它是无意义的。而size存储着列表

对象的数量,才是最终用户所需要的。为了防止用户错误修改,这一属性被设置为privae的,不过可以通过size()获取。

下面,对ArrayList的初始以及其列表对象的增加和删除等三种情况下的size自动改变机制进行分析。

1、初始Capacity和size值。

从上面给出的ArrayList构造方法源码中,我们不难看出Capacity初始值(initialCapacity)可以由用户直接指定或由用户指定的Collection集合存

储的对象数目确定,如果没有指定,系统默认为10。而size的被声明为int型变量,默认为0,当用户指定Collection创建ArrayList时,size值等于

initialCapacity。

2、add()方法

该方法的源码如下:

public boolean add(E e) {

ensureCapacityInternal(s

  • 15
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值