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<String> arraylist = new ArrayList();
  9.         LinkedList<String> 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<arraylist.size();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<linkedlist.size();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的集合对象还是不要随便用呀。一定要搞清特性再去使用。呵呵

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





评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值