ArrayList、LinkedList和Vector的关系和区别

ArrayList:

  1.逻辑顺序和物理顺序都连续的线性表
  2.基于数组来实现数组

Vector:

  1.逻辑顺序和物理顺序都连续的线性表
  2.基于数组来实现安全

LinkedList:

  1.逻辑顺序连续可是物理顺序不必定连续的线性表
  2.基于双向链表来实现ide

联系:

  1.ArrayList、LinkedList和Vector都是List集合下的经常使用类
  2.ArrayList和Vector都是基于数组实现的,方法的实现也是大同小异
  3.ArrayList和Vector都存在扩容问题
  4.ArrayList和Vector默认初始化大小都为性能

区别:

  1.ArrayList的扩容是将容量变为了原来的1.5倍,Vector的扩容时变为原来容量的2倍
  2.ArrayList的初始化采用的是延迟加载,当一次增长元素的时候才会初始化成大小为默认值的数组,Vector的初始化采用的时候当即加载,在建立对象的时候就建立了大小为默认值的数组
  3.ArrayList是线程不安全的,Vector是线程安全的。不考虑线程安全的状况时通常使用ArrayList,性能高,Vector线程安全读读互斥,所以性能偏低
  4.ArrayList和Vector都支持随机访问,LinkedList不支持随机访问,在查询状况多的场景下,ArrayList更适合使用
  5.LinkedList进行增长和删除操做的时间复杂度为O(1),ArrayList增长删除的时间复杂度是O(N),在增删频繁的状况下,LinkedList更适合使用线程

相关文章
相关标签/搜索