6_ArrayList 和 LinkedList 的区别
时间: 2024-06-03 11:08:44 浏览: 15
1.底层数据结构不同:ArrayList底层是数组,LinkedList底层是双向链表。
2.ArrayList的查询效率高,LinkedList的插入删除效率高。ArrayList的查询效率因为底层数组是连续的内存空间,所以可以直接根据索引定位到元素,时间复杂度为O(1),但是插入删除的效率因为需要移动元素,所以时间复杂度为O(n);LinkedList的插入删除效率高,因为只需要修改相邻元素的指针,时间复杂度为O(1),但是查询效率因为需要遍历整个链表,时间复杂度为O(n)。
3.ArrayList的内存空间使用效率高,LinkedList的内存空间使用效率低。ArrayList底层数组是连续的内存空间,可以预先分配一定的空间,避免频繁的扩容,所以内存空间使用效率高;LinkedList因为每个节点都需要保存前后指针,所以内存空间使用效率低。
4.ArrayList的线程不安全,LinkedList的线程不安全。因为ArrayList和LinkedList都不是线程安全的,所以在多线程环境下需要注意线程安全问题。
5.ArrayList的迭代器效率高,LinkedList的迭代器效率低。ArrayList的迭代器效率高,因为底层数组是连续的内存空间,所以可以直接通过索引取元素,时间复杂度为O(1);LinkedList的迭代器效率低,因为需要遍历整个链表,时间复杂度为O(n)。
6.ArrayList的随机访问效率高,LinkedList的顺序访问效率高。因为ArrayList底层是数组,可以通过索引直接访问元素,所以随机访问效率高;LinkedList因为是链表,只能顺序访问,所以顺序访问效率高。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![md](https://img-home.csdnimg.cn/images/20210720083646.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)