特征
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适用于插入删除比较多场景。