ArrayList和LinkList对比
ArrayList | LinkList | |
---|---|---|
数据结构 | 可变数组 | 双向链表 |
线程安全 | 不安全 | 不安全 |
查询效率 | 高 | 低 |
删除添加元素效率 | 低 | 高 |
内存利用 | 低 | 高 |
存储结构
ArrayList采用可变数组的数据结构,每次元素操作之前就会检测数组容量是否足够,不够就进行扩容(扩容大小是之前的1.5倍)然后将之前数组赋值到新的数组当中去,释放之前数组内存。
LinkList 采用双向链表数据结构
查询效率
ArrayList 基于数组的数据结构,在内存中使用连续的内存地址,通过索引查询效率更高
LinkList 采用双向链表数据结构 ,在内存中是不相邻的内存地址,查询的从链表指定位置开始一个一个查询,所以相对效率低一些
删除添加元素效率
ArrayList 基于数组的数据结构,删除和添加,都需要移动其他元素的位置,所以效率低,
LinkList 基于双向链表的数据结构,添加和删除只需要根据节点头节点和尾节点,修改相邻两个节点数据即可,所以效率相对高一些
内存利用
ArrayList 需要连续的内存地址,LinkList不需要连续的内内存地址更加节省内存空间