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

来源:互联网 发布:淘宝设计价格表 编辑:程序博客网 时间:2024/05/17 04:31

不多说,直接上代码。

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

0 0
原创粉丝点击