array和linked list的区别
Q:array和linked list在数据结构中的区别是什什么?在查找,删除,增加操作中的复杂度分别是多少?
ArrayList和LinkedList都实现了List接口,他们有以下的不同点:
-
LinkedList比ArrayList更占内存,因为LinkedList为每一个节点存储了两个引用,一个指向前一个元素,一个指向下一个元素。
-
ArrayList是基于索引的数据接口,它的底层是数组。它可以以O(1)时间复杂度对元素进行随机访问。与此对应,LinkedList是以元素列表的形式存储它的数据,每一个元素都和它的前一个和后一个元素链接在一起,在这种情况下,查找某个元素的时间复杂度是O(n)。
图示: -
相对于ArrayList,LinkedList的插入,添加,删除操作速度更快,因为当元素被添加到集合任意位置的时候,不需要像数组那样重新计算大小或者是更新索引。
-
什么场景下更适宜使用 LinkedList,什么场景下适宜使用ArrayList?ArrayList的实现用的数组,LinkedList是基于链表,ArrayList适合查找,LinkedList适合增删。ArrayList很快,也很容易使用。但是要记得要给定一个合适的初始大小,尽可能的减少更改数组的大小。
图示: