您的位置:首页 > 其它

关于ArrayList与LinkedList插入元素性能的对比

2015-12-26 20:02 567 查看
不多说,直接上代码。

package com.集合总结;

import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import java.util.Random;

/**
* @author fengorz
*      最终得出结论:
*          ArrayList的遍历和普通插入性能都由于LinkedList,
*          唯独在进行首尾插入的时候LinkedList的性能才能看出来。
*/
public class Test3 {

private List linkedList,arrayList;
private long start1,start2;
private long end1,end2;
private Random r = new Random();

/**
* 测试LinkedList的插入性能
*/
public void test1() {
linkedList = new LinkedList();
start1 = System.currentTimeMillis(); // 记录执行操作前时间
for (int i = 0; i < 1000000; i++) {
linkedList.add("Hello java.");
}
end1 = System.currentTimeMillis();// 记录执行操作后时间

System.out.println("LinkedList用时:" + (end1 - start1));
}

/**
* 测试ArrayList的插入性能
*/
public void test2() {
arrayList = new ArrayList();
start2 = System.currentTimeMillis();// 记录执行操作前时间
for (int i = 0; i < 1000000; i++) {
arrayList.add("Hello java.");
}
end2 = System.currentTimeMillis();// 记录执行操作后时间

System.out.println("ArrayList用时:" + (end2 - start2));
}

public void testIndex0_1(){
start1 = System.currentTimeMillis();
for (int i = 0 ; i < 10000; i++) {
//linkedList.add(r.nextInt(100000), "Hello java.");//LinkedList的优势是插入位置是集合里比较靠前的效率会比较高。
linkedList.add(80000,"hello List");
}
end1 = System.currentTimeMillis();

System.out.println("插入LinkedList集合靠前位置用了"+(end1-start1)+"ms");
}

public void testIndex0_2(){
start2 = System.currentTimeMillis();
for (int i = 0; i < 10000; i++) {
//arrayList.add(r.nextInt(100000), "Hello java.");
arrayList.add(80000,"hello List");//如果每次都是插在最前面的话,ArrayList会很坑爹的。
}
end2 = System.currentTimeMillis();

System.out.println("插入ArrayList集合靠前位置用了"+(end2-start2)+"ms");
}

public static void main(String[] args){
final Test3 t3 = new Test3();

new Thread(new Runnable(){

@Override
public void run() {
// TODO Auto-generated method stub
t3.test1();
t3.testIndex0_1();

}

}).start();

new Thread(new Runnable(){

@Override
public void run() {
// TODO Auto-generated method stub
t3.test2();
t3.testIndex0_2();

}

}).start();

}

}


结果如下:

LinkedList用时:105

ArrayList用时:105

随机插入LinkedList用了13ms

随机插入ArrayList用了6211ms
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: