基本介绍:

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

LinkedList的底层操作机制:

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

image.png

ArrayList和LinkedList比较

image.png

ArrayList和LinkedList的选择

  1. 如果改查的操作多,选择 Arraylist
  2. 如果增删的操作多,选择 LinkedList
  3. 一般来说,在程序中,80%-90%都是查询,因此大部分情况下会选择ArrayList
  4. 在一个项目中,根据业灵活选择,也可能这样,一个镆块使用是ArrayList,另外一个模块是LinkedList,也就是说,要根据业务来进行选择
  5. 以上两种都为单线程情况下使用