ArrayList、Vevtor和LinkedList的联系和区别

联系:
ArrayList、Vector、LinkedList类均在java.util包中,都为List接口的子类。
区别:

  1. 结构上:ArrayList、Vector基于数组实现,LinkedList基于双向链表实现。
ArrayList Vector
初始化策略 采用懒加载策略,第一次add时才初始化内部数组,默认初始化大小为10。 产生对象时就初始化内部数组,默认大小为10。
扩容策略 扩容为原数组的1.5倍 扩容为原数组的2倍
线程安全问题 采用异步处理线程不安全,性能较高 采用synchronized修饰增删查改方法,线程安全,性能较低(锁粒度太粗,将当前集合对象锁住,读读互斥)
其他 JDK内置的Stack是Vector的子类
使用场景 在大部分场合都是适合使用的,常适用于频繁查找、在集合末端插入与删除元素 不建议使用
  1. LinkedList采用异步处理,线程不安全,频繁在任意位置的插入与删除考虑使用,LinkedList是Queue接口的常用子类。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章