LinkedList + VS ArrayList

182 阅读1分钟

特征

1、数据是按照插入有序,输出顺序与输入顺序一致

2、数据是可以重复插入的

3、可以存储null的

4、底层采用的数据结构是双向链表

5、要找到某个结点,必须从头开始遍历。(查询慢,增删快)

总结

从源码可以看出 LinkedList 是基于链表实现的。

在查找和删除某元素时,区分该元素为 null和不为 null 两种情况来处理,LinkedList 中允许元素为 null。

基于链表实现不存在扩容问题。

查找时先判断该节点位于前半部分还是后半部分,加快了速度

因为基于链表,所以插入删除极快,查找比较慢。

实现了栈和队列的相关方法,所以可作为栈,队列,双端队列来用。

ArrayList和LinkedList区别

1、ArrayList是基于动态数组的数据结构、LinkedList是基于链表实现

2、对于随机访问的get和set方法,ArrayList有优于LinkedList,因为LinkedList要移动指针

3、对于新增和删除操作,LinkedList比较占优势,因为ArrayList要移动数据

应用场景

ArrayList使用在查询比较多场景,而LinkedList适用于插入删除比较多场景。