ArrayList 和 LinkedList哪个迭代操作快

我看书上说是LinkedList做迭代操作更快一点,可是我实际做实验却不是,请问这个是什么原因呃?代码如下:String[]test1=newString[900000]... 我看书上说是LinkedList做迭代操作更快一点,可是我实际做实验却不是,请问这个是什么原因呃?代码如下:
String[] test1 = new String[900000]; for(int i=0;i<900000;i++){ test1[i]=String.valueOf(i); } ArrayList a1 = new ArrayList(); for(int i=0;i<900000;i++){ a1.add(test1[i]); } LinkedList ll = new LinkedList(); for(int i=0;i<900000;i++){ ll.add(test1[i]); } long start = System.currentTimeMillis(); for(Iterator it=ll.iterator();it.hasNext() ; ){ it.next(); } System.out.println("LinkedList迭代集合元素所用时间为:"+(System.currentTimeMillis()-start)); start = System.currentTimeMillis(); for (Iterator it=a1.iterator();it.hasNext() ; ) { it.next(); } System.out.println("ArrayList迭代集合元素所用时间为:"+(System.currentTimeMillis()-start));
展开
 我来答
巨人战舰
2014-01-31 · TA获得超过186个赞
知道小有建树答主
回答量:116
采纳率:0%
帮助的人:154万
展开全部

事实上肯定是LinkedList效率比较快,因为在内部是通过链表链接的,而ArrayList则是直接存取比较快一些,因为内部用的是下标索引。以下是在我电脑进行五次测试的结果,你多测试测试,结果肯定是LinkedList比较快

追问
我试了好多次,还是相反的结果
追答
受你精神的刺激,刚才我狠狠谈久了一番,收获不小
首先不知道你学没学过数据结构,正如前面两位所言,链接表比顺序表遍历要快
但是在Java集合中,你使用了Iterator迭代器,迭代器模式为每个特定的数据结构提供了最好的遍历算法,因此你用ArrayList迭代比LinkedList快也不意外,这涉及到Java集合底层的细节,有空你可以研究研究。
而如果不用迭代器,在for循环中用List.get(下标)的方法,你会发现链表的遍历速度远远慢于ArrayList,这正充分说明了两种集合的特点
财商uX
2014-01-31 · 超过11用户采纳过TA的回答
知道答主
回答量:42
采纳率:0%
帮助的人:28.1万
展开全部
因为你的 ArrayList 存放元素大小是固定的,并且在事先已经指定并开僻了指定数量的容量的数组空间,实际上只是对数组进行了操作。

而 LinkedList 是采用链表实现的,在事先无法指定容量,每添加一个数据都得去开僻新的空间。

如果在添加时这样进行比较的话,对于 LinkedList 是很不公平的。

对于迭代来说,ArrayList 速度远比 LinkedList 慢,因为链表迭代是很快的,如果要让 ArrayList 比 LinkedList 快的话,可以使用下标索引。

一般来说,ArrayList 和 LinkedList 具体使用哪一个以下这些我总结的使用规则:

1:事先能预知元素数量时,应优先选择 ArrayList,并且在构造中进行初始化
2:事先不能预知元素数量时,根据不同的迭代需要选择 ArrayList 或者 LinkedList
3:如果有很多的 remove 操作时,应优先选择 LinkedList
4:需要顺序迭代,也就是从第一个元素开始一个一个地访问到最后一个时,应优先选择 LinkedList
5:需要随机访问,也就是使用 get(int) 方法取任意下标访问时,应优先选择 ArrayList
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
科技兰兰加油
2014-02-01 · TA获得超过159个赞
知道答主
回答量:161
采纳率:80%
帮助的人:9.3万
展开全部
个人觉得讨论这个意义不大
一个是底层是数组
一个是链表
查找就Arraylist
增删改多的话就LinkedList
你这个和电脑的运行环境有很大关系 线程轮转 差几毫秒是必须的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式