ArrayList底层是用数组实现的存储
查询效率高、增删效率低
线程不安全
一般情况下仍然使用ArrayList,因为多数情况不涉及频繁的修改
频繁修改操作:---LinkList
线程安全:---vector
采用数组扩容的方式实现
先定义一个长度的数组,当超过长度是再去定义一个长度更长的数组,JDK的底层源码是通过算法原长度 + (原长度/2))去定义新的数组的长度
老的数组的内容拷贝到新的数组中
新的内容继续放入新的数组后面
ArrayList源码解读
ArrayList Remove源码
将原数组的后一位索引值拷贝到所要移除的元素的索引位置---所以说如果数组长度很长要用ArrayList改的话就会拷贝索要修改的索引后面所有的元素往前移,费资源且耗时
源码解读:
原文:https://www.cnblogs.com/JunkingBoy/p/14691068.html