CSNotesCSNotes
TODO
数据库
Java
SSM
React
学习路线
分布式
Redis
实用工具
GitHub
TODO
数据库
Java
SSM
React
学习路线
分布式
Redis
实用工具
GitHub
  • 第一阶段 语言基石:OOP 与关键字

    • 一、OOP 三大特性
    • 二、Java 数据类型
    • 三、Java 浮点类型
    • 四、包装类与自动装箱拆箱
    • 五、类的访问权限(简表)
    • 六、访问修饰符(公司类比)
    • 七、final 关键字
    • 八、static 关键字(入门)
    • 九、静态方法与静态常量(深入)
    • 十、抽象类 vs 接口(对比版)
    • 十一、抽象类
    • 十二、接口
    • 十三、枚举 enum
    • 十四、反射
  • 第二阶段 集合框架与常用工具类

    • 一、集合框架总览
    • 二、ArrayList 源码解析
    • 三、LinkedList 源码分析
    • 四、HashSet
    • 五、String 底层结构
    • 六、String 常量池与 equals
    • 七、StringBuffer
    • 八、时间类 Date/Calendar/Timestamp
    • 九、泛型
    • 十、Stream 流
    • 十一、工具类设计规范
    • 十二、Assert 断言参数校验
  • 第三阶段 设计模式(Summer IOC/AOP 核心思想)

    • 一、七大设计原则
    • 二、单例模式(饿汉式)
    • 三、装饰器模式
    • 四、策略模式
  • 第四阶段 异常处理机制

    • 一、Java 异常体系
    • 二、异常(完整版)
  • 第五阶段 并发编程

    • 一、多线程基础
    • 二、多线程进阶
  • 第六阶段 JVM 内存模型与 GC(占位:待补)

  • 第七阶段 网络通信与 RPC(造 Summer-RPC)

    • 一、RPC 定义
  • 第八阶段 消息队列 MQ(造 Summer-MQ)

    • 一、MQ 业务解耦

二、ArrayList 源码解析

ArrayList 实现了 List 接口,继承了抽象类 AbstractList。size 表示含有的元素。capacity 表示上限。

private void rangeCheck(int index) {
    if (index >= size)
        throw new IndexOutOfBoundsException(outOfBoundsMsg(index));
}
public E get(int index) {
        rangeCheck(index);

        return elementData(index);
    }
public E set(int index, E element) {
        rangeCheck(index);

        E oldValue = elementData(index);
        elementData[index] = element;
        return oldValue;
    }

使用 get 和 set 方法会比用下标返回多一个范围检查。

创建 ArrayList 对象时,如果使用无参构造器,则初始 elementData 容量为 0,第一次添加,则扩容 elementData 为 10。如需要再次扩容,则扩容 elementData 为 1.5 倍。

集合只能存储引用类型。

编辑此页
上次更新: 2026/9/18 20:24
Prev
一、集合框架总览
Next
三、LinkedList 源码分析