LinkedList是一个双向链表,一般用它来作为队列使用,特别是算法题中经常会用到它。下图是LinkedList中各种插入和删除操作对应的执行位置。
- add、offer:从尾巴插入
- remove、poll、pop:从头取出
- addFirst、offerFirst、push:从头插入
- removeLast、pollLast:从尾取出
Tips:
- LinkedList:可作为队列使用(线程不安全)
- PriorityQueue:可作为堆使用(默认小根堆;线程不安全)
- Stack:栈
- ArrayDeque:队列 / 栈(速度优于LinkedList和Stack)