LinkedList

  1. LinkedList底层实现了双向链表和双端队列的特点
  2. 可添加任意元素,元素可重复,包括null
  3. 线程不安全,没实现同步

LinkedList底层操作机制

  1. LinkedList底层维护了一个双向列表
  2. LinkedList中维护了两个属性first和last分别指向首节点和尾节点
  3. 每个节点(Node对象),里面又维护饿了prev, next, item三个属性,其中通过prev指向前一个,next指向后一个节点,实现双向链表
  4. 所以LinkedList的元素添加和删除,不是通过数组完成的,相对来说效率较高

ArrayList和LinkedList比较

alt text

ArrayList和LinkedList比较

  1. 如果改查的操作多,选择ArrayList
  2. 如果增删操作多,选择LinkedList
  3. 一般,程序中80-90%都是查询,因此大部分情况下会选择ArrayList
  4. 在一个项目中,根据业务灵活选择,也可能这样,一个模块使用的是ArrayList,另一个模块是LinkedList
  5. 二者都线程不安全

本文章使用limfx的vscode插件快速发布