ArrayList VS LinkedList
2016-03-30 00:00
246 查看
摘要: ArrayList VS LinkedList
java编程中我们用最多的几个类可以就是String,ArrayList,HashMap了.特别是ArrayList我们几乎无人不知,甚至有乱用的嫌疑了我们来看看ArrayList和LinkedList的区别.故名思意ArrayList是数组表,LinkedList是链接表.ArrayList的所有数据是在同一个地址上,而LinkedList的每个数据都拥有自己的地址.
我们来比较一下常用的数据的插入,数据的删除,数据的更新,数据查询.
数据插入 :比如在i节点插入一个新数据
ArrayList:循环到i节点,插入一个新数据,然后把i节点后面的所有的数据的index加1. ->操作多
LinkedList:循环到i节点,把前一个节点的后续链接到新数据,然后把新数据链接到后一个数据就可以了. ->操作少
结论:平均效率LinkedList要好.
数据删除 :比如删除i节点数据
ArrayList:循环到i节点,然后把i节点后面的所有的数据的index减1. ->操作多
LinkedList:循环到i节点,把前一个节点的后续链接到i节点的后一个数据就可以了. ->操作少
结论:平均效率LinkedList要好.
数据查询 :比如查询i节点数据
ArrayList:循环到i节点. ->操作少
LinkedList:循环到i节点. ->操作少,但由于每个数据的地址不一样,查询比如 ArrayList慢.
结论:平均效率 ArrayList要好.
数据更新 :比如更新i节点数据
ArrayList:循环到i节点,把数据更新. ->操作少
LinkedList:循环到i节点,把前数据更新. ->操作少,但由于查询速度没有 ArrayList好,所有效率没有 ArrayList好.
结论:平均效率ArrayList要好.
这样我们就可以看到各有优点.
如果查询操作较多ArrayList的效果更好.如果删除,插入较多LinkedList的效果较好.具体怎么用还看具体的需求.
java编程中我们用最多的几个类可以就是String,ArrayList,HashMap了.特别是ArrayList我们几乎无人不知,甚至有乱用的嫌疑了我们来看看ArrayList和LinkedList的区别.故名思意ArrayList是数组表,LinkedList是链接表.ArrayList的所有数据是在同一个地址上,而LinkedList的每个数据都拥有自己的地址.
我们来比较一下常用的数据的插入,数据的删除,数据的更新,数据查询.
数据插入 :比如在i节点插入一个新数据
ArrayList:循环到i节点,插入一个新数据,然后把i节点后面的所有的数据的index加1. ->操作多
LinkedList:循环到i节点,把前一个节点的后续链接到新数据,然后把新数据链接到后一个数据就可以了. ->操作少
结论:平均效率LinkedList要好.
数据删除 :比如删除i节点数据
ArrayList:循环到i节点,然后把i节点后面的所有的数据的index减1. ->操作多
LinkedList:循环到i节点,把前一个节点的后续链接到i节点的后一个数据就可以了. ->操作少
结论:平均效率LinkedList要好.
数据查询 :比如查询i节点数据
ArrayList:循环到i节点. ->操作少
LinkedList:循环到i节点. ->操作少,但由于每个数据的地址不一样,查询比如 ArrayList慢.
结论:平均效率 ArrayList要好.
数据更新 :比如更新i节点数据
ArrayList:循环到i节点,把数据更新. ->操作少
LinkedList:循环到i节点,把前数据更新. ->操作少,但由于查询速度没有 ArrayList好,所有效率没有 ArrayList好.
结论:平均效率ArrayList要好.
这样我们就可以看到各有优点.
如果查询操作较多ArrayList的效果更好.如果删除,插入较多LinkedList的效果较好.具体怎么用还看具体的需求.
相关文章推荐
- Mongodb与spring集成
- day22 案例 发送邮箱激活码 & 购物车 分析
- git
- 常用vps推荐
- rebar3 shell使用
- 利用docker部署eclipse-che
- Python学习第十四天
- androidannotations
- getSupportFragmentManager要用在FragmentActivity及其子类中
- iOS runtime自动归档问题
- Tcp连接/Socket
- a simple and old Switch
- 一个鸡肋的View旋转
- Oracle 数据库类型和java 类型以及jdbc类型对照
- MapReduce编程二
- Hbase里的排序和比较大小
- python xlrd模块
- sql中不走索引情况
- hive文件存储格式
- 数据仓库--什么是数据集市