ArrayList和LinkedList集合的区别
-
两者的底层结构
-
ArrayList 底层实际上是一个数组结构
-
LinkedList 底层是一个双向链表结构,每个数据点都有两个指针,分别指向相邻的两个数据
-
-
两者的查询方式
- ArrayList 在查询数据的时候,根据数组的(首地址+偏移量),计算出元素在内存中的位置
- LinkedList 在内存中不是连续的空间,而是每个元素有一个**[ 元素|下一元素地址 ]**这样的内存结构。在查询数据时,只能从首元素开始,依次获得下一个元素的地址,知道找到查询的数据。
-
两者的添加方式
- ArrayList 是创建一个新数组,将原先的数组复制一份存入新数组中,同时存入添加的数据,返回新数组
- LinkedList 是队原先集合进行断链与续链的操作,
-
两者的删除方式,remove有两种方式,根据内容删除与根据索引删除
- ArrayList
- LinkedList
总结:
- ArrayList
- 查询快,增删慢
- LinkedList
- 查询慢,增删快