ArrayList扩容机制

本文详细探讨了ArrayList在Java中的扩容机制。当调用add()方法添加元素时,ArrayList会根据当前数组容量和预估最小容量(minCapacity)进行扩容。如果使用的是默认空数组,minCapacity将取默认大小10。扩容过程包括计算新的容量,确保其大于原容量的1.5倍或等于minCapacity,同时防止超过最大数组大小。最后,通过Arrays.copyOf()方法复制原有数据到新扩容的数组中。
摘要由CSDN通过智能技术生成
  • ArrayList类的属性

    // 数组默认初始长度   
    private static final int DEFAULT_CAPACITY = 10;

     //空数组
    private static final Object[] EMPTY_ELEMENTDATA = {};

     // 默认空数组
    private static final Object[] DEFAULTCAPACITY_EMPTY_ELEMENTDATA = {};

     //数组缓冲区
    transient Object[] elementData; // non-private to simplify nested class access

     //Arraylist的元素个数
     @serial
    private int size;
  • ArrayList的三个构造器
//有参构造器:指定数组大小,指定为0时,为EMPTY_ELEMENTDATA
public ArrayList(int initialCapacity) {
        if (initialCapacity > 0) {
            this.elementData = new Object[initialCapacity];
        } else if (initialCapacity == 0) {
            this.elementData = EMPTY_ELEMENTDATA;
        } else {
            throw new IllegalArgumentException
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值