java面试题49ArrayList的底层实现原理

📚 ArrayList 底层实现原理详解

核心本质:基于动态数组实现,提供动态扩容能力,支持高效随机访问(O(1)),但插入/删除可能需移动元素(O(n))。


🔧 底层结构

// JDK 11 源码关键字段
public class ArrayList<E> extends AbstractList<E>
        implements List<E>, RandomAccess, Cloneable, java.io.Serializable {
   
   
    
    // 核心:存储元素的数组(使用 transient 避免序列化空位)
    transient Object[] elementData;  
    
    private int size;  // 实际元素数量
    
    // 默认初始容量
    private static final int DEFAULT_CAPACITY = 10;
}

⚙️ 四大核心机制

1. 初始化
// 无参构造(延迟初始化)
public ArrayList() {
   
   
    this.elementData = DEFAULTCAPACITY_EMPTY_ELEMENTDATA; // 空数组
}

// 首次添加元素时初始化
public boolean add(E e) {
   
   
    if (size == elementData.length)  // 首次添加时 length=0
        elementData = grow();        // 扩容到默认容量10
    // ... 添加元素
}
2. 动态扩容(核心)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值