Java中遍历ArrayList比LinkedList快多少?

最近要做个Server端的应用。而且要做些性能方面的优化。

改程序的时候,突然想起测试一下各种List性能的差别。程序生成了5万条信息,分别放在ArrayList和LinkedList里。

然后做循环访问。猜猜我看到了什么?呵呵。

ArrayList要比LinkedList快 7000多倍!!!

代码如下:
  1. package test;
  2. import java.util.ArrayList;
  3. import java.util.LinkedList;
  4. import java.util.Random;
  5. public class ListTest {
  6.     private static Random random = new Random();
  7.     public static void main(String[] args){
  8.         ArrayList arraylist = new ArrayList();
  9.         LinkedList linkedlist = new LinkedList();
  10.         for(int i=0;i<50000;i++){
  11.             String r = randomString();
  12.             arraylist.add(r);
  13.             linkedlist.add(r);
  14.         }
  15.         
  16.         System.out.println("arraylist size "+arraylist.size());
  17.         System.out.println("linkedlist size "+linkedlist.size());
  18.         System.out.println("------");
  19.         long begin = System.currentTimeMillis();
  20.         for(int i=0;i<100;i++){
  21.             for(int j=0;j
  22.                 arraylist.get(j);
  23.             }
  24.         }
  25.         System.out.println("arraylist time "+(System.currentTimeMillis()-begin));
  26.         
  27.         begin = System.currentTimeMillis();
  28.         for(int j=0;j
  29.             linkedlist.get(j);
  30.         }
  31.         System.out.println("linkedlist time "+(System.currentTimeMillis()-begin));
  32.         
  33.         
  34.     }
  35.     protected static String randomString() {
  36.         return Long.toString(random.nextLong(), 36);
  37.     }
  38. }
为了能看到ArrayList的循环时间,特别的在ArrayList循环外又增加了100次循环。

哈,看来Java的集合对象还是不要随便用呀。一定要搞清特性再去使用。呵呵

至于速度差异的原理,大家有清楚的帮忙回一下喽。:)





你可能感兴趣的:(Java代码性能调试,java,string,server,优化,list,测试)