ArrayList和LinkedList的区别以及优缺点以及ArrayList和vector的区别

ArrayListLinkedList都是实现了List接口的容器类,用于存储一系列的对象引用。他们均可以对元素的增删改查进行操做。面试

对于ArrayList,它在集合的末尾删除或添加元素所用的时间是一致的,可是在列表中间的部分添加或删除时所用时间就会大大增长。可是它在根据索引查找元素的时候速度很快。数组

对于LinkedList则相反,它在插入、删除集合中任何位置的元素所花费的时间都是同样的,可是它根据索引查询一个元素的时候却比较慢。安全

ArrayList和LinkedList的区别

  1.  ArrayList是实现了基于动态数组的数据结构,LinkedList是基于链表结构。
  2. 对于随机访问的get和set方法,ArrayList要优于LinkedList,由于LinkedList要移动指针。
  3.  对于新增和删除操做add和remove,LinkedList比较占优点,由于ArrayList要移动数据。

他们在性能上的有缺点:

  1. 对ArrayList和LinkedList而言,在列表末尾增长一个元素所花的开销都是固定的。对 ArrayList而言,主要是在内部数组中增长一项,指向所添加的元素,偶尔可能会致使对数组从新进行分配;而对LinkedList而言,这个开销是 统一的,分配一个内部Entry对象。
  2. 在ArrayList集合中添加或者删除一个元素时,当前的列表所全部的元素都会被移动。而LinkedList集合中添加或者删除一个元素的开销是固定的。
  3. LinkedList集合不支持 高效的随机随机访问(RandomAccess),由于可能产生二次项的行为。
  4. ArrayList的空间浪费主要体如今在list列表的结尾预留必定的容量空间,而LinkedList的空间花费则体如今它的每个元素都须要消耗至关的空间。

因此在咱们进行对元素的增删查操做的时候,进行 查操做时用ArrayList,进行增删操做的时候最好用LinkedList。数据结构

(面试)ArrayList和vector的区别:dom

  1. 都继承于同一个类Abstractlist
  2. ArrayList JDK1.2 非线程安全(单线程推荐使用)性能更 高。支持输出
  3. Vector JDK1.0 线程安全,性能相对较低。支持输出: foreach,listIterator,Enumeration.内部