zoukankan      html  css  js  c++  java
  • Java中ArrayList和LinkedList区别

    https://www.cnblogs.com/soundcode/p/6294174.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会非常消耗资源,除非位置离头部很近。但是插入和删除元素花费常数时间。

  • 相关阅读:
    计算1的个数
    【环境配置】配置git
    Spoj 9887 Binomial coefficients 构造
    程序猿与HR博弈之:有城府的表达你的兴趣爱好
    C和指针 (pointers on C)——第六章:指针(上)
    关于undo表空间配置错误的ORA-30012
    每天进步一点点——Linux系统中的异常堆栈跟踪简单实现
    javaScript 对象的使用
    手机游戏加密那点事儿_2d资源加密_1
    支持向量机
  • 原文地址:https://www.cnblogs.com/stanljj/p/8515554.html
Copyright © 2011-2022 走看看