ArrayList和LinkList插入数据性能对比(分首端和末端插入)

1:运行代码如下

package com.mfl.hk;

import java.util.ArrayList;
import java.util.Date;
import java.util.LinkedList;
import java.util.List; /**
 * Created by user on 16/8/4.
 */

/**
 * 当ArrayList和LinkList均在数组尾端插入数据时,两者性能相差不大
 * 当ArrayList和LinkList均在数组首端端插入数据时,LinkList明显优于ArrayList
 */
public class ListTest {
    public static void main(String[] args) {

            int n = 800000;

            List intListEnd = new ArrayList();
            long start1 = (new Date()).getTime();

            for (int i = 0; i < n; i++) {
                intListEnd.add(i);
            }
            long end1 = (new Date()).getTime();
            long mid1 = end1 -start1;
            System.out.println("ArrayList在数组尾端插入数据量为"+n+"时,所用时间毫秒是="+mid1);



            List linkListEnd = new LinkedList();
            long start2 = (new Date()).getTime();

            for (int j = 0; j < n; j++) {
                linkListEnd.add(j);
            }
            long end2 = (new Date()).getTime();
            long mid2 = end2 -start2;
        System.out.println("LinkList在数组尾端插入数据量为"+n+"时,所用时间毫秒是="+mid2);


        List intListStart = new ArrayList();
        long start3 = (new Date()).getTime();

        for (int k = 0; k < n; k++) {
            intListStart.add(0,k);
        }
        long end3 = (new Date()).getTime();
        long mid3 = end3 -start3;
        System.out.println("ArrayList在数组首端插入数据量为"+n+"时,所用时间毫秒是="+mid3);



        List linkListStart = new LinkedList();
        long start4 = (new Date()).getTime();

        for (int l = 0; l < n; l++) {
            linkListStart.add(0,l);
        }
        long end4 = (new Date()).getTime();
        long mid4 = end4 -start4;
        System.out.println("LinkList在数组首端插入数据量为"+n+"时,所用时间毫秒是="+mid4);
    }
}

2:运行结果如图
 
  
3:说明
 
  
 当ArrayList和LinkList均在数组尾端插入数据时,两者性能相差不大
 当ArrayList和LinkList均在数组首端端插入数据时,LinkList明显优于ArrayList

 
 

你可能感兴趣的:(java基础)