arraylist和linkedlist的区别和使用场景

如题所述

  1、ArrayList是基于数组实现的,其构造函数为:

  private transient Object[] elementData;

  private int size;

  ArryList初始化时,elementData数组大小默认为10;
  每次add()时,先调用ensureCapacity()保证数组不会溢出,如果此时已满,会扩展为数组length的1.5倍+1,然后用array.copy的方法,将原数组拷贝到新的数组中;

  ArrayList线程不安全,Vector方法是同步的,线程安全;

  2、LinkedList是基于双链表实现的:

  Object element;

  Entry next,
  previous;
  初始化时,有个header Entry,值为null;
  使用header的优点是:在任何一个条目(包括第一个和最后一个)都有一个前置条目和一个后置条目,因此在LinkedList对象的开始或者末尾进行插入操作没有特殊的地方;

  使用场景:

  (1)如果应用程序对各个索引位置的元素进行大量的存取或删除操作,ArrayList对象要远优于LinkedList对象;

  ( 2 ) 如果应用程序主要是对列表进行循环,并且循环时候进行插入或者删除操作,LinkedList对象要远优于ArrayList对象;
温馨提示:答案为网友推荐,仅供参考
相似回答