1.ArrayList的缺陷
ArraryList由于底层是一段连续的空间,所以在ArrayList任意位置插入或者删除元素时,就 需要将后续元素往前或者往后搬移,时间复杂度为O(n),效率比较低,因此ArrayList不适合做任意位置插入和删除比较多的场景。因此,Java集合中还引入了LinkedList,即链表结构。
2.链表的概念和结构
链表是一种物理结构上非连续的存储结构,数据元素的逻辑顺序是通过链表中的引用链接次序实现 的。我们先来看张图:

注意:
- 从上图可以看出,链式结构在逻辑上是连续的,但是物理上不一定连续
- 现实中的结点一般都是从堆上申请出来的
- 从堆上申请的空间,是按照一定的策略来分配的,两次申请的空间可能连续,也可能不连续
在实际情况中,链表的结构非常多样,以下情况组合起来就有八种链表结构:
1.单向或者双向

2.带头或者不带头

3.循环或者非循环

本文探讨了ArrayList的插入和删除性能问题,介绍了链表特别是LinkedList的数据结构,包括其特点、链表类型、以及LinkedList在Java集合框架中的应用。重点讲述了LinkedList的动态大小、有序性、插入/删除效率和空间开销,以及如何在实际场景中选择合适的数据结构。
最低0.47元/天 解锁文章
579

被折叠的 条评论
为什么被折叠?



