5.29晚学习总结

5.29晚学习总结 学习目标:学习ArrayList底层原理学习产出:📚 ArrayList 完整知识总结一、基础1. 底层数据结构动态数组:transient Object[] elementData2. 所属包java.util.ArrayList3. 扩容流程// 核心公式newCapacity=oldCapacity+(oldCapacity1);// 1.5倍场景扩容行为new ArrayList()初始化空数组(懒加载)第一次add()扩容到 10后续满了1.5 倍扩容addAll()直接扩容到「当前容量 + 新增数量」,避免多次扩容4. 常用方法及时间复杂度方法时间复杂度说明add(e)O(1)尾部插入,均摊add(index, e)O(n)需要移动元素addAll(c)O(m)m为新增元素个数,一次性扩容get(index)O(1)数组随机访问set(index, e)O(1)直接覆盖,不移动元素remove(index)O(n)需要移动后面元素remove(Object o)O(n)先遍历查找,再移动remove(list.size()-1)O(1)删除最后一个元素contains(e)O(n)遍历查找indexOf(e)O(n)遍历查找isEmpty()O(1)判断 size == 0size()O(1)返回 size 字段5.toArray()用法// 方式1:返回 Object[]Object[]arr1=list.toArray();// 方式2:返回指定类型(推荐)String[]arr2=list.toArray(