注意:线性表的两种实现->顺序实现和链式实现
线性表的两种实现
| 顺序表 | 链表 |
空间性能 | 顺序表的存储空间是静态分布的,需要一个固定的数组,总有部分数组元素要浪费 | 链表的存储空间是动态分布,因此不会有空间被浪费。但由于链表需要额外的空间来为每个节点保存指针,因此也要牺牲一部分空间。 |
时间性能 | 顺序表中的元素的逻辑顺序和物理存储顺序保持一致,而且支持随机存取。因此顺序表在查找,读取时候效率很快。 | 链表采用链式结构来保存表内的元素,因此在插入、删除的时候效率比较高。 |
线性表本质上是一个充当容器的工具类,当程序有一组结构相同的数据元素需要保存的时候,就可以考虑使用线性表来保存。
Java中经常使用的线性表是list,Java中list接口就是代表线性表,线性表中常见的两种实现分别是ArrayList和LinkedList,其中LinkedList是一个双向链表,而ArrayList是动态数组来实现。
根据上面的区别很容易得到下面的结论:
ArrayList实现原理是数组,有点在于遍历查找速度很快,但是对于插入和删除效率不高。
LinkedList的实现就是链表遍历和查找速度不高,但是插入和删除的效率很高。