欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > > 文章正文

ArrayList与LinkedList的区别,linkedlist

来源: javaer 分享于  点击 40704 次 点评:166

ArrayList与LinkedList的区别,linkedlist


一.ArrayList

ArrayList是List接口的可变数组的实现。实现了所有可选列表操作,并允许包括 null 在内的所有元素。
它实现List接口、底层使用数组保存所有元素。其操作基本上是对数组的操作。

二.LinkedList

LinkedList是一个双向链表。它也可以被当作堆栈、队列或双端队列进行操作。LinkedList随机访问效率低,但随机插入、随机删除效率低。

三.ArrayList与LinkedList的区别

从上面我们可以看出这两者之间在用法上并没有什么区别,底层实现无非就是一个数组一个链表了,但是它们在功能上有很大区别,这取决于它们之间的效率

下面我们可以来证明一下ArrayList和LinkedList在增删操作和查询操作上的效率差距

public abstract class ListTemp {

        public abstract void Add();
        public abstract void Select();
        public  long Gettime() {
               return System.currentTimeMillis();
        }


}

public class ListDemo extends ListTemp{

    private  List<Integer> arraylist;

    private  List<Integer> linkedlist;

    @Override
    public  void Add() {
         long arraystart=Gettime();
          for(int i=0;i<100000;i++) {
           arraylist.add(0,i);
          }
          long arrayend=Gettime();
          System.out.println("ArrayList添加所用时:"+(arrayend-arraystart));

          System.out.println("***********************************");

          long linkedstart=Gettime();
          for(int i=0;i<100000;i++) {
              linkedlist.add(0,i);
          }
          long linkedend=Gettime();
          System.out.println("LinkedList添加所用时:"+(linkedend-linkedstart));
    }



    @Override
    public void Select() {
         long arraystart=Gettime();
         for(int k=0;k<arraylist.size();k++) {
                if(arraylist.get(k)==1) {
                    break;
                }
         }
         long arrayend=Gettime();
         System.out.println("ArrayList删除所用时:"+(arrayend-arraystart));

         System.out.println("***********************************");
         long linkedstart=Gettime();
         for(int k=0;k<linkedlist.size();k++) {
             if(linkedlist.get(k)==1) {
                 break;
             }
         }
         long linkedend=Gettime();
         System.out.println("LinkedList删除所用时:"+(linkedend-linkedstart));
    }

    @Test
    public void Test() {
        arraylist=new ArrayList<Integer>();
        linkedlist=new LinkedList<Integer>();
        Add();
        System.out.println();
        Select();
    }


}

打印结果:

ArrayList添加所用时:2752
***********************************
LinkedList添加所用时:16

ArrayList删除所用时:26
***********************************
LinkedList删除所用时:21768

所以对于LinkedList经常用在增删操作较多而查询操作很少的情况下,而ArrayList则相反,经常用在查询操作较多而增删操作较少的情况下

END!!!!!!!!!

相关文章

    暂无相关文章

用户点评