[学习目标]
- ArrayList的缺点
- 认识链表
- 如何使用LinkedList
- ArrayList与LinkedList的区别 \
1.ArrayList的缺点
缺点: ArrayList的底层是用数组来存储数据的, 在物理层面上是一段连续空间,所以当想在ArrayList任意位置插入或删除时,就需要将元素往后或往前覆盖 ,导致时间复杂达到O(n),效率大大折扣 , 说明ArrayList不适合插入和删除多的业务场景, 因此程序员在java集合中引入了LinkedList(链表).
2.认识链表
链表的概念及结构
概念: 链表是一种物理存储机构非连续的存储结构, 顺序是通过链表中的指针链 接次序实现的
链表结构
2.1 单向或双向
2.2.带头或者不带头
2.3.循环或不循环
实际链表的结构还不止如此, 以上结构就可以组合8种了, 虽然有许多的的链表结构, 我们掌握2种重点结构就可以了.
无头单向非循环链表: 结构简单,主要用于其他数据结构的子结构 , 也是面试中的常客.
无头双向链表:Java集合框架库中LinkedList底层实现的就是无头单向链表.
3.LinkedList的使用
3.1 什么是LinkedLiset
LinkedList的底层是双向链表结构,由于链表没有将元素存储在连续的空间中,元素存储在单独的节点中,通过引用将节点连接起来了,因此在任意位置插入或者删除元素时,不需要搬移元素,效率比较高。
在集合框架中, LinkedList也实现了List接口,具体如下
3.2. LinkedList的使用
1.LinkedList的构造方法
2.LinkedList的常用方法介绍
- ArrayList和LinkedList的区别
[总结]
ArrayList和LinkedList两者之间各有优点
ArrayList: 基于顺序表实现, 支持快速的随机访问(get和set操作),因为可以直接通过索引访问元素,无需遍历
LinkedList: 基于双向链表实现,插入和删除操作效率较高,因为只需要改变相邻节点的引用,而不需要移动大量数据。