码迷,mamicode.com
首页 > 其他好文 > 详细

ArrayList和LinkedList的区别

时间:2017-09-14 23:51:54      阅读:319      评论:0      收藏:0      [点我收藏+]

标签:存储   img   object   pre   strong   listt   区别   set   比较   

    从字面上大概可以猜出ArrayList是用数组实现的的一种数据结构;LinkedList采用链表实现。那么要剖析区别的话大概可以概括到数组和链表的区别。结合在数据结构课上所学,我大概可以猜出几点区别,无外乎数组采用连续的内存空间存储数据,链表中用到了引用,那么存储的内容可以不在连续的内存空间里。
以上是假如不会ArrayList和LinkedList的前提下做的假设。实际上两者主要区别有三点。

   1.ArrayList是使用动态数组实现的数据结构,LinkedList使用双链表实现
   2.ArrayList非常适合于随机读取数据(get,set),而LinkedList因为每次读取数据必须从根节点往后读取,效率会比较慢;
   3.对于涉及到插入/删除操作,LinkedList的效率比ArrayList高,因为ArrayList涉及数组的整体移动,而LinkedList只需要简单的更改下一个引用的的位置;

测试代码

 1 package util;
 2 import java.util.ArrayList;
 3 import java.util.LinkedList;
 4 import java.util.List;
 5 
 6 public class ListTest {
 7     static final int N=60000;
 8     public static long[] timeUse(List<Object> list,long[] ls){
 9         int i;
10         long start=System.currentTimeMillis();
11         Object o = new Object();
12         for(i=0;i<N;i++) {
13             list.add(o);
14         }
15         ls[0]=System.currentTimeMillis()-start;
16         start=System.currentTimeMillis();
17         int j=list.size();
18         for(i=0;i<j;i++){  
19             list.get(i);
20         }
21         ls[1]=System.currentTimeMillis()-start;
22         return ls;
23     }
24 
25     public static void main(String[] args) {
26         long[] time = ListTest.timeUse(new ArrayList<Object>(),new long[2]);
27         long[] time1 = ListTest.timeUse(new LinkedList<Object>(), new long[2]);
28         System.out.println("使用ArraysList添加"+N+"条数据花费:"+time[0]+"ms");
29         System.out.println("使用LinkedList添加"+N+"条数据花费:"+time1[0]+"ms");
30         System.out.println("使用ArrayList查询"+N+"条数据花费:"+time[1]+"ms");
31         System.out.println("使用LinkedList查询"+N+"条数据花费:"+time1[1]+"ms");
32 
33     }
34 }

运行结果

技术分享

说明:本测试代码比较极端,但是大概也反映出了ArrayList和LinkedList的区别。假设条件是插入的位置都是list的第一个位置,查询是按list顺序查询。

ArrayList和LinkedList的区别

标签:存储   img   object   pre   strong   listt   区别   set   比较   

原文地址:http://www.cnblogs.com/qn1023/p/7523214.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!