「面试题」ArrayList和LinkedList的区别

2021-07-29  本文已影响0人  ChadJ

ArrayList和LinkedList的区别

1. 数据结构不同

ArrayList是基于动态数组实现的。

LinkedList是基于双向链表实现的。

2. 效率不同

随机访问

随机访问(get或set),ArrayList比LinkedList效率高。因为LinkedList要移动指针进行查找。

LinkedList在查找过程中会先确定当前要访问的index处于前半部分还是后半部分,然后在从头或尾开始查找。

添加元素

添加元素又分为是随机位置添加还是只向尾部添加。

如果是只向尾部添加,在给定合适大小的数组中,不发生扩容的情况下ArrayList的性能要好一些。

在集合头部添加,LinkedList的性能更好,因为ArrayList需要进行数组的复制和重排。

删除元素

删除元素LinkedList主要影响性能的点是在找要删除的元素,ArrayList主要影响性能的点是在删除后数组的移动重组。

遍历

Arraylist实现了RandomAccess接口,遍历速度快。

LinkedList通过for循环遍历慢,可以通过迭代器遍历。

3. 实现接口

LinkedList实现了Deque接口,可以做为双端队列或栈使用。

上一篇下一篇

猜你喜欢

热点阅读