ArrayList 篇章
ArrayLis 是一个数组列表,它的底层实现的 Object
数组 , 有时候我们会用 ArrayList 来存储一些基本数据结构,比如 int
, float
,double
... ,其实这些都是存储的他们的一个包装类。
ArrList 与 Java的数组的区别
- ArrList 支持动态的扩容,而数组的长度是固定的 。
- ArrList 能够存储对象,支持不同类型的数据 ,数组的存储类型是固定的。
属性定义
private static final int DEFAULT_CAPACITY = 10; private static final Object[] EMPTY_ELEMENTDATA = {}; private static final Object[] DEFAULTCAPACITY_EMPTY_ELEMENTDATA = {}; transient Object[] elementData private int size;
有参构造
//传递一个初始化的值 initialCapacity public ArrayList(int initialCapacity) { if (initialCapacity > 0) { //如果initialCapacity 大于0 的话就创建个 Object 对象 的数组 长度为 initialCapacity this.elementData = new Object[initialCapacity]; } else if (initialCapacity == 0) { //如过等于0的话 ,那么就将 EMPTY_ELEMENTDATA 这个空对象赋给当前对象的 elementData this.elementData = EMPTY_ELEMENTDATA; } else { //如果都不是的话就抛出一个异常 throw new IllegalArgumentException("Illegal Capacity: "+initialCapacity); } }
无参构造
public ArrayList() { //赋值一个空对象给 elementData this.elementData = DEFAULTCAPACITY_EMPTY_ELEMENTDATA; }
这边可以得出ArryaList 初始化,要么是给他赋值,要么默认为空.
add方法
public boolean add(E e) { // e 为我们添加的对象 ensureCapacityInternal 的 size + 1 等于 1 传递下去 ensureCapacityInternal(size + 1); // Increments modCount!! elementData[size++] = e; return true; }
进入 ensureCapacityInternal 方法 //就收到参数 1 private void ensureCapacityInternal(int minCapacity) { //传递参数 calculateCapacity ensureExplicitCapacity(calculateCapacity(elementData, minCapacity)); }
进入到 calculateCapacity(elementData, minCapacity)
private static int calculateCapacity(Object[] elementData, int minCapacity) { if (elementData == DEFAULTCAPACITY_EMPTY_ELEMENTDATA) { return Math.max(DEFAULT_CAPACITY, minCapacity); } return minCapacity; }
喜欢请赞赏一下啦^_^

【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步