1、底层数据结构的差异
ArrayList,数组,连续的内存空间,长度固定
LinkedList,双向链表,不是连续的内存空间
2、一个常规的结论
ArrayList查询快,因为是连续的内存空间,增删慢,因为需要发生数据迁移
LinkedList查询慢,因为需要通过指针一个一个寻找, 但是删除插入快,因为只需改变前后节点的指针指向即可
这个结论不严谨,但是足够应付很多面试了
因为比如查找第2个元素
ArrayList 是连续的内存空间 可以计算偏移量找到元素
LinkedList 不是连续的内存空间 无法计算 只能一个一个往下找
ArrayList > LinkedList
但是如果要找到b这个数据
ArrayList LinkedList 都得一个一个找,谁快谁慢就不一定了
3、假设要存储1000个对象的信息哪个更省内存?
ArrayList 数组,初始化好空间 就是1000 避免后期的扩容
LinkedList 双向链表,除了存数据之外还要存两个指针,一个指向头部,一个指向尾部,意味着多了2000个指针
所以ArrayList省内存
4、ArrayList细节分析
1、增加
添加到末尾,正常不需要做特别的处理,除非现有的数组空间不够了,需要扩容
数组初始化容量为 10
怎么扩容?
当发现容