Java中ArrayList和LinkedList性能的比较(结果总是怪怪的,如果有不当还请指出)。

不说废话,直接看代码:

 1 /**
 2  * @author HuYang 
 3  * @date 2016年8月15日 下午3:26:43
 4  */
 5 public class TestJiHe {
 6 
 7     private static List<Integer> aList = new ArrayList<Integer>();
 8     private static List<Integer> kList = new LinkedList<Integer>();
 9     //测试变量
10     private static int para;
11     
12     public static void add(List<Integer> list){
13         int i = 0;
14         long startTime = System.currentTimeMillis();
15         while(i<para){
16             list.add(i);
17             i++;
18         }
19         long endTime = System.currentTimeMillis();
20         System.out.println(list.getClass().getSimpleName()+" "+"添加用时:"+(endTime - startTime));
21     }
22     
23     public static void delete(List<?> list){
24         Random r = new Random();
25         int index = r.nextInt(para);
26         long startTime = System.currentTimeMillis();
27         list.remove(index);
28         long endTime = System.currentTimeMillis();
29         System.out.println(list.getClass().getSimpleName()+" "+"第"+index+"被删除:"+index+",删除用时> "+(endTime - startTime));
30     }
31     
32     public static void get(List<Integer> list){
33         Random r = new Random();
34         int index = r.nextInt(para);
35         long startTime = System.currentTimeMillis();
36         int value = list.get(index);
37         long endTime = System.currentTimeMillis();
38         System.out.println(list.getClass().getSimpleName()+" "+"第"+index+"数据是:"+value+",查询用时> "+(endTime - startTime));
39     }
40     
41     public static void iterator(List<?> list){
42         Iterator<?> inter = list.iterator();
43         long startTime = System.currentTimeMillis();
44         while(inter.hasNext()){
45             inter.next();
46         }
47         long endTime = System.currentTimeMillis();
48         System.out.println(list.getClass().getSimpleName()+" "+"遍历用时:"+(endTime - startTime));
49     }
50     
51     public static void main(String[] args){
52     
53         //测试数据量赋值
54         para = 9999;
55         
56         //创建测试对象
57         aList = new ArrayList<Integer>();
58         kList = new LinkedList<Integer>();
59         
60         //执行测试
61         add(aList);
62         iterator(aList);
63         get(aList);
64         delete(aList);
65         System.out.println("<<=====================>>");
66         add(kList);
67         iterator(kList);
68         get(kList);
69         delete(kList);
70     }
71 }

测试结果:

ArrayList 添加用时:3
ArrayList 遍历用时:2
ArrayList 第9629数据是:9629,查询用时> 0
ArrayList 第4227被删除:4227,删除用时> 0
<<=====================>>
LinkedList 添加用时:2
LinkedList 遍历用时:1
LinkedList 第3022数据是:3022,查询用时> 1
LinkedList 第266被删除:266,删除用时> 0

 增加para的值为:99999(每次执行的用时结果和CPU的时间片分配有关,但是大致走势不变):

ArrayList 添加用时:10
ArrayList 遍历用时:9
ArrayList 第47622数据是:47622,查询用时> 0
ArrayList 第74386被删除:74386,删除用时> 0
<<=====================>>
LinkedList 添加用时:8
LinkedList 遍历用时:11
LinkedList 第4682数据是:4682,查询用时> 0
LinkedList 第62292被删除:62292,删除用时> 0

  增加para的值为:999999(每次执行的用时结果和CPU的时间片分配有关,但是大致走势不变):

ArrayList 添加用时:21
ArrayList 遍历用时:9
ArrayList 第497726数据是:497726,查询用时> 0
ArrayList 第415678被删除:415678,删除用时> 0
<<=====================>>
LinkedList 添加用时:75
LinkedList 遍历用时:21
LinkedList 第111957数据是:111957,查询用时> 1
LinkedList 第151875被删除:151875,删除用时> 1

 结果大家分析一下就知道了,不做阐述。但是总感觉是ArrayList的性能在数据量较大时会比LinkedList好些,不知道是否正确,还请大家多多指教。

 欢迎留言补充。

posted @ 2016-08-16 10:55  原野里的回忆  阅读(269)  评论(0编辑  收藏  举报