LinkedList和ArrayList
2016-01-10 16:24
260 查看
LinkedList和ArrayList的差别主要来自于ArrayList和LinkedList数据结构的不同:
ArrayList是基于数组,它使用索引在数组中检索元素是很快的,其获取元素的时间复杂度是O(1),但是插入/删除元素开销很大,因为这需要移动大量元素。
LinkedList中插入/删除元素的时间复杂度为O(1),但检索一个元素需要线性时间复杂度。
LinkedList需要更多的内存,因为ArrayList的每个索引的位置是实际的数据,而LinkedList中的每个节点中存储的是实际的数据和前后节点的位置。
什么场景下更适宜使用LinkedList,而不用ArrayList?
很少会随机访问数据;因为如果你需要LinkedList中的第n个元素的时候,你需要从第一个元素顺序数到第n个数据,然后读取数据;
频繁插入/删除元素。
ArrayList是基于数组,它使用索引在数组中检索元素是很快的,其获取元素的时间复杂度是O(1),但是插入/删除元素开销很大,因为这需要移动大量元素。
LinkedList中插入/删除元素的时间复杂度为O(1),但检索一个元素需要线性时间复杂度。
LinkedList需要更多的内存,因为ArrayList的每个索引的位置是实际的数据,而LinkedList中的每个节点中存储的是实际的数据和前后节点的位置。
什么场景下更适宜使用LinkedList,而不用ArrayList?
很少会随机访问数据;因为如果你需要LinkedList中的第n个元素的时候,你需要从第一个元素顺序数到第n个数据,然后读取数据;
频繁插入/删除元素。
相关文章推荐
- android:windowSoftInputMode属性介绍
- 简易在线投票系统(php)——前端设计(主页的源码)
- c语言中gets ,getschar 和fgets 的用法及三者之间的差别,还有scanf
- PriorityQueue解析
- MYSQL添加新用户 MYSQL为用户创建数据库 MYSQL为新用户分配权限
- android Installation failed due to invalid URI! 错误处理
- Maven spark project on Linux
- 常用Linux系统命令
- 【spring配置】——spring配置数据源
- equals与==
- Poj 3693 Maximum repetition substring|后缀数组|st表
- 详解JMeter函数和变量(转载)
- 【CODEVS1369】xth 砍树
- BZOJ 1755 [USACO 2005 Qua] Bank Interest 快速幂
- 数字图像处理资料搜罗
- 通过网络共享连接树莓派
- 搜索基础:符号表和二叉搜索树
- 从头认识java-17.2 线程中断(interrupt)
- Angularjs 数据过滤
- Android中ListView结合CheckBox实现数据批量选择(全选、反选、全不选)