ArrayLists和LinkedList的区别,下述说法正确的有

2025-04-14 07:33:34
推荐回答(1个)
回答1:

ArrayLists和LinkedList的区别,下述说法正确的有?

A. ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构。
B. 对于随机访问get和set,ArrayList觉得优于LinkedList,因为LinkedList要移动指针。
C. 对于新增和删除操作add和remove,LinkedList比较占优势,因为ArrayList要移动数据。
D. ArrayList的空间浪费主要体现在在list列表的结尾预留一定的容量空间,而LinkedList的空间花费则体现在它的每一个元素都需要消耗相当的空间。

链接:https://www.nowcoder.com/questionTerminal/bd323741339e4bf2b9e9c2c72f1e0d28
来源:牛客网

A. ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构。
//正确,这里的所谓动态数组并不是那个“ 有多少元素就申请多少空间 ”的意思,通过查看源码,可以发现,这个动态数组是这样实现的,如果没指定数组大小,则申请默认大小为10的数组,当元素个数增加,数组无法存储时,系统会另个申请一个长度为当前长度1.5倍的数组,然后,把之前的数据拷贝到新建的数组。

-
---------------------------------------------------------------------

B. 对于随机访问get和set,ArrayList觉得优于LinkedList,因为LinkedList要移动指针。//正确,ArrayList是数组,所以,直接定位到相应位置取元素,LinkedLIst是链表,所以需要从前往后遍历。

-----------------------------------------------------------------------

C. 对于新增和删除操作add和remove,LinedList比较占优势,因为ArrayList要移动数据。//正确,ArrayList的新增和删除就是数组的新增和删除,LinkedList与链表一致。

-------------------------------------------------------------------------

D. ArrayList的空间浪费主要体现在在list列表的结尾预留一定的容量空间,而LinkedList的空间花费则体现在它的每一个元素都需要消耗相当的空间。//正确,因为ArrayList空间的增长率为1.5倍,所以,最后很可能留下一部分空间是没有用到的,因此,会造成浪费的情况。对于LInkedList的话,由于每个节点都需要额外的指针,所以,你懂的。