ArrayList和LinkedList的区别(面试题)

1.
ArrayList 是基于顺序表实现的(底层结构是数组),而LinkedList 是基于双向链表实现的。
2.
ArrayList 数据是村存放在连续的内存空间上,而LinkedList 数据不是连续的存放于内存空间上。
3.
ArrayList 能够高效的进行访问,按照下标操作元素时间复杂度是O(1)。
4.
LinkedList 能够高效进行删除插入,时间复杂度是O(1)。
(当然,这里需要注意的是LinkedList 指定位置插入时也是通过下标位置确定的,取下标的时间复杂度确实O(n),而对于ArrayList 取下标时间复杂度是O(1),但插入操作的时间复杂度是O(n))。
5.
ArrayList 在初始化的时候可以通过capaci参数指定最大容量,当add尾插的时候,如果元素个数小于capacity指定的最大容量,效率是很高的,复杂度为O(1),当元素个数超过最大容量时,就需要触发扩容操作(一般是new一个更大的内存空间,把原来的元素搬运过来,再释放旧的空间),而对于LinkedList,没有capacity指定最大容量,都是新增加一个元素,就去New一个特定的节点对象。
6.
ArrayList害怕遇到内存碎片,而LinkedList则无需担心。

猜你喜欢

转载自blog.csdn.net/weixin_45755718/article/details/105479648
今日推荐