zoukankan      html  css  js  c++  java
  • arraylist与linkedlist的区别与性能测试

    /**
    *arraylist和linkedlist的适用场合。
    **/
    import java.util.List;
    import java.util.ArrayList;
    import java.util.LinkedList;
    import java.util.Date;
    public class Demo2{
        public static void main(String[]aa){
            switch (aa[0]){
                case "0":arrylistInset();break;
                case "1":linkedlistInset();break;
                case "2":arrylistGet();break;
                case "3":linkedlistGet();break;
            }
            
        }
        public static void arrylistInset(){    //967ms
            List<Integer> list = new ArrayList<Integer> ();
            
            for(int i=0;i<5000;i++){//创建数据表
                for(int j=1;j<1000;j++){
                    list.add(i+j);
                }
            }
            Long begin = new Date().getTime();
            for(int i=3;i<1000;i+=3){//插入数据
                list.add(i,i);
            }
            Long end = new Date().getTime();
            System.out.println("cost : " + (end - begin)+ " ms");
            System.out.println("number:" + list.size());
        }
        public static void linkedlistInset(){    //15ms
            List<Integer> list = new LinkedList<Integer> ();
            
            for(int i=0;i<5000;i++){//创建数据
                for(int j=1;j<1000;j++){
                    list.add(i+j);
                }
            }
            Long begin = new Date().getTime();
            for(int i=3;i<1000;i+=3){//插入数据
                list.add(i,i);
            }
            Long end = new Date().getTime();
            System.out.println("cost : " + (end - begin)+ " ms");
            System.out.println("number:" + list.size());
        }
        public static void arrylistGet(){    //get 1w条数据花费时间:0ms
                                            //      10w条:0ms;
            List<Integer> list = new ArrayList<Integer> ();
            
            for(int i=0;i<5000;i++){//创建数据表
                for(int j=1;j<1000;j++){
                    list.add(i+j);
                }
            }
            Long begin = new Date().getTime();
            for(int i=3;i<50000;i++){//插入数据
                list.get(i);
            }
            Long end = new Date().getTime();
            System.out.println("cost : " + (end - begin)+ " ms");
            System.out.println("number:" + list.size());
        }
        public static void linkedlistGet(){    //get 1w条数据花费时间:219ms
                                            //      10w条:6616ms;
            List<Integer> list = new LinkedList<Integer> ();
            
            for(int i=0;i<5000;i++){//创建数据
                for(int j=1;j<1000;j++){
                    list.add(j);
                }
            }
            Long begin = new Date().getTime();
            for(int i=3;i<50000;i++){//插入数据
                list.get(i);
            }
            Long end = new Date().getTime();
            System.out.println("cost : " + (end - begin)+ " ms");
            System.out.println("number:" + list.size());
        }
    }
    /**
    *总结:
    *1.ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构。 
    *2.对于随机访问get和set,ArrayList觉得优于LinkedList,因为LinkedList要移动指针。 
    *3.对于新增和删除操作add和remove,LinedList比较占优势,因为ArrayList要移动数据
    **/
  • 相关阅读:
    VS2008下编的程序生成的EXE 在没有安装VS2008的计算机上能运行
    GDI+使用小记
    双缓冲技术绘图
    INI文件格式及其读写
    缩放图片并保存
    按值传递&&按引用传递&&按地址传递
    傻瓜式制作的U盘winpe(支持4G以上U盘)速度超快
    vi 命令大全
    fopen和open的区别
    Linux下Socket网络编程,文件传输,数据传输的C语言例子
  • 原文地址:https://www.cnblogs.com/-ROCKS/p/5859076.html
Copyright © 2011-2022 走看看