队列是一种先进先出(First In First Out, FIFO)的数据结构。
Queue家族
正在绘制中…
Queue源码
1 | public interface Queue<E> extends Collection<E> { |
Deque源码
1 | public interface Deque<E> extends Queue<E> { |
方法比较
抛出异常 | 返回特殊值 | |
---|---|---|
入队(当队列已满时) | add将抛出IllegalStateException | offer直接返回false |
出队(当队列为空时) | remove将抛出NoSuchElementException | poll返回null |
取队首(当队列为空时) | element将抛出NoSuchElementException | peek返回null |
实现类比较
实现类 | 存储结构 | 是否允许为null | 默认初始容量 | 扩容机制 | 是否线程安全 |
---|---|---|---|---|---|
ArrayDeque | 数组 | 不允许 | 16 | 2n | 非线程安全 |
LinkedList | 双链表 | 允许 | — | — | 非线程安全 |
PriorityQueue | 堆 | 不允许 | 11 | n < 64 ? 2n +2: 1.5n | 非线程安全 |
ArrayBlockingQueue | 数组 | 不允许 | — | — | 线程安全 |
LinkedBlockingQueue | 单链表 | 不允许 | 2^31 - 1 | — | 线程安全 |