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要移动数据
    **/
  • 相关阅读:
    DevOps平台中的自动化部署
    GitLab的安装及使用教程
    Nginx配置相关
    Shell常用模块
    PostgreSQL基础
    大数据集群监控工具
    大数据常用组件
    kafka知识
    数据结构可视化(包括红黑树动态演示)
    python 周考1
  • 原文地址:https://www.cnblogs.com/-ROCKS/p/5859076.html
Copyright © 2011-2022 走看看