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会非常消耗资源,除非位置离头部很近。但是插入和删除元素花费常数时间。

  • 相关阅读:
    OC学习一周总结
    C语言基础学习总结
    123
    汇编中中括号[]作用以及lea和mov指令的区别
    C#获取局域网内所有的SQL Server服务器名
    .net 初中级程序员招聘
    C#在客户端与 JS 交互
    [ZT]Mac下安装mysql和workbench
    Eclipse文件夹导入Jar
    Tomcat配置后提示404的解决办法
  • 原文地址:https://www.cnblogs.com/stanljj/p/8515554.html
Copyright © 2011-2022 走看看