码迷,mamicode.com
首页 > 其他好文 > 详细

LinkedList和ArrayList

时间:2016-04-21 01:40:16      阅读:130      评论:0      收藏:0      [点我收藏+]

标签:

ArrayList与LinkedList在底层的实现是不一样的,前者依托于数组,后者依托于链表,与其说是ArrayList与LinkedList的区别不如说是数组与链表的区别。

1.对于数组(ArrayList)而言,随机访问的get比较占优势。

例子:

对于均存放了200000个元素的ArrayList和LinkedList,使用get获取其中元素。

     int temp=0;
        System.out.print("ArrayList获取元素的时间\n");
        for(int j=0;j<arrlist.size();j++){
            if(j%40000==0){
                temp++;
                long begin2 = System.nanoTime();
                System.out.println(arrlist.get(j));
                long end2 = System.nanoTime();
                System.out.println("第"+temp+"次获取i值所用时间"+(end2-begin2)+"ns");
            }
        }
        int temp1=0;
        System.out.print("LinkedList获取元素的时间\n");
        for(int j=0;j<linlist.size();j++){
            if(j%40000==0){
                temp1++;
                long begin3 = System.nanoTime();
                System.out.println(linlist.get(j));
                long end3 = System.nanoTime();
                System.out.println("第"+temp1+"次获取i值所用时间"+(end3-begin3)+"ns");
            }
        }

运行结果:

技术分享

 

2.对于链表(LinkedList)而言,add和remove操作要快很多。

但是实际情况来看,如果是单条数据的插入LinkedList反而没有ArrayList快

例子:

        long begin = System.nanoTime();
        for(int i=0;i<200000;i++){
            arrlist.add("data");
        }
        long end = System.nanoTime();
        System.out.print((end-begin)+"ns");
        System.out.print("\n");
        long begin1 = System.nanoTime();
        for(int i=0;i<200000;i++){
            linlist.add("data");
        }
        long end1 = System.nanoTime();
        System.out.print((end1-begin1)+"ns");
        System.out.print("\n");        

运行结果:

技术分享

但是如果是随机的批量增加删除数据,LinkedList是比ArrayList快多了的。(实验未验证)

3.LinkedList的方法较丰富。有getFirst(),getLast()这些都是ArrayList没有的。

4.总结:

查询操作用ArrayList,插入删除用LinkedList。

数据不是很庞大,没必要纠结。

LinkedList和ArrayList

标签:

原文地址:http://www.cnblogs.com/Rui-Jia/p/5415178.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!