• Java中ArrayList和LinkedList区别


    转载:https://www.cnblogs.com/huzi007/p/5550440.html

    ArrayList和LinkedList的大致区别如下:
    1.ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构。 
    2.对于随机访问get和set,ArrayList觉得优于LinkedList,因为LinkedList要移动指针。 
    3.对于新增和删除操作add和remove,LinedList比较占优势,因为ArrayList要移动数据。 

    上代码:

    复制代码
     1     static final int N=50000;
     2     static long timeList(List list){
     3         long start=System.currentTimeMillis();
     4         Object o = new Object();
     5         for(int i=0;i<N;i++) {
     6             list.add(0, o);
     7         }
     8         return System.currentTimeMillis()-start;
     9     }
    10     static long readList(List list){
    11         long start=System.currentTimeMillis();
    12         for(int i=0,j=list.size();i<j;i++){
    13 
    14         }
    15         return System.currentTimeMillis()-start;
    16     }
    17 
    18     static List addList(List list){
    19         Object o = new Object();
    20         for(int i=0;i<N;i++) {
    21             list.add(0, o);
    22         }
    23         return list;
    24     }
    25     public static void main(String[] args) {
    26         System.out.println("ArrayList添加"+N+"条耗时:"+timeList(new ArrayList()));
    27         System.out.println("LinkedList添加"+N+"条耗时:"+timeList(new LinkedList()));
    28 
    29         List list1=addList(new ArrayList<>());
    30         List list2=addList(new LinkedList<>());
    31         System.out.println("ArrayList查找"+N+"条耗时:"+readList(list1));
    32         System.out.println("LinkedList查找"+N+"条耗时:"+timeList(list2));
    33     }
    复制代码

    当我们在集合中装5万条数据,测试运行结果如下:

    显然我们可以看出ArrayList更适合读取数据,linkedList更多的时候添加或删除数据。

    ArrayList内部是使用可増长数组实现的,所以是用get和set方法是花费常数时间的,但是如果插入元素和删除元素,除非插入和删除的位置都在表末尾,否则代码开销会很大,因为里面需要数组的移动。
    LinkedList是使用双链表实现的,所以get会非常消耗资源,除非位置离头部很近。但是插入和删除元素花费常数时间。

  • 相关阅读:
    Objective-C面向对象-对象和类
    eImage(仅两行代码实现输出从数据库中查询到的二进制字段)标签
    yii第三方插件snoopy配置
    iOS应用崩溃日志分析 iOS应用崩溃日志揭秘
    斯坦福《机器学习》Lesson6感想———1、函数间隔和几何间隔
    openstack 中国联盟公开课參会总结
    【翻译自mos文章】多租户中的service管理
    谷歌浏览器訪问不了啦,oh shit!
    从程序员转向淘宝店主的探索
    Python爬取韩寒所有新浪博客
  • 原文地址:https://www.cnblogs.com/renjiaqi/p/10088877.html
Copyright © 2020-2023  润新知