ArrayList与LinkedList的谬论
来源:互联网 发布:mac版网游 编辑:程序博客网 时间:2024/06/05 20:47
对数据进行修改的时候使用链表可以直接在指定的位置实现删除、插入操作,不需要像数组那样还要移动数组中的数据,而实现数据直接访问的时候使用数组的就可以直接的找到目的地址,不像链表一样需要从头到尾的寻找。
所以很多人认为在数据的插入、删除的时候链表的效率要比数组的高,因为他不需要数组的频繁的移动数据,但是这几天看到一篇文章说是其实数组的效率还是比较高的,因为他在数据移动的时候是在内存中并且相邻,数据移动就会非常的快。而链表需要从前到后找到数据然后在进行插入、删除操作。而链表在数据的遍历的时候是很费时间的。
有一个很形象的比喻就是:
插入、删除数据 数组就像是搬运工一样将东西搬到另外一个地方,而链表就像是有很多的抽屉,每一个抽屉都有下一个抽屉的钥匙,所以每一次都需要打开抽屉取出钥匙,然后再打开下一个抽屉,就这样一直下去。
但是很多人都认为搬用东西的数组肯定没有开抽屉的链表快,因为人们都无形中觉得数组搬运的东西又重距离也远,所以这就是人们觉得数组的效率很差,而链表的就很快了。但是实际并不是这样的,数组移动的距离很短而且东西也很轻,所以数组的访问还是很快的。
下面的一个例子来说明这些吧。。
import java.util.ArrayList;
import java.util.Arrays;
import java.util.LinkedList;
import java.util.Random;
public class Test {
}
输出的结果为:
经过多次的测试,结果都是为ArrayList插入数据要比LinkedList要快一些,当着这里可能也有别的误差在里面。所以我们要靠自己程序进行测试才能得到相应的结论。
- ArrayList与LinkedList的谬论
- ArrayList与LinkedList的差别
- LinkedList 与 ArrayList的思考
- ArrayList与LinkedList的区别
- ArrayList与LinkedList的区别
- ArrayList与LinkedList的区别
- linkedList与arrayList的区别
- Arraylist与linkedlist的区别
- LinkedList与ArrayList的区别
- ArrayList与LinkedList的区别
- ArrayList与LinkedList的区别
- LinkedList与ArrayList的区别
- ArrayList与LinkedList的区别
- ArrayList与LinkedList的区别
- ArrayList与LinkedList的区别
- ArrayList与LinkedList的区别
- ArrayList与LinkedList的区别
- ArrayList与LinkedList的效率
- iPhone开发笔记 (4) 如何改变UITableViewCell的行高
- 静态成员变量和静态成员函数
- 如何做一名优秀的博士生——施一公
- linux下的C语言开发(gdb调试)
- linux下的C语言开发(AT&T 汇编语言)
- ArrayList与LinkedList的谬论
- linux下的C语言开发(静态库)
- linux下的C语言开发(动态库)
- linux基础学习-shell脚本学习(鸟哥私房菜)
- Linux磁盘管理
- linux下的C语言开发(定时器)
- HTML4默认层叠样式表
- “0X????????”指令引用的“0x00000000”内存,该内存不能为“read”或“written”
- Stdcall and DLL tools of MSVC and MinGW