Vector,ArrayList,LinkedList有何区别?

时间:2021-09-24 19:40:40

  三者都属于List的子类,方法基本相同。比如都可以实现数据的添加、删除、定位以及都有迭代器进行数据的查找,但是每个类
在安全,性能,行为上有着不同的表现。
  Vector是Java中线程安全的集合类,如果不是非要线程安全,不必选择使用,毕竟同步需要额外的性能
开销,底部实现也是数组来操作,再添加数据时,会自动根据需要创建新数组增加长度来保存数据,并拷贝原有数组数据
  ArrayList是应用广泛的动态数组实现的集合类,不过线程不安全,所以性能要好的多,也可以根据需要增加数组容量,不过与
Vector的调整逻辑不同,ArrayList增加50%,而Vector会扩容1倍。
  LinkedList是基于双向链表实现,不需要增加长度,也不是线程安全的
  Vector与ArrayList在使用的时候,应保证对数据的删除、插入操作的减少,因为每次对改集合类进行这些操作时,都会使原有数据
进行移动除了对尾部数据的操作,所以非常适合随机访问的场合。
  LinkedList进行节点的插入、删除却要高效的多,但是随机访问对于该集合类要慢的多。