Queue<E> là collection FIFO (First-In-First-Out) — "xếp hàng".
API có 2 phiên bản:
| Thao tác | Throw exception | Return special value |
|---|---|---|
| Insert | add(e) | offer(e) → false nếu full |
| Remove | remove() → NSEE | poll() → null nếu rỗng |
| Peek | element() → NSEE | peek() → null nếu rỗng |
Dùng offer/poll/peek để tránh exception khi rỗng.
// ArrayDeque — KHUYẾN NGHỊ cho FIFO bình thường
Queue<String> q = new ArrayDeque<>();
q.offer("a"); q.offer("b");
q.poll(); // "a"
// PriorityQueue — KHÔNG FIFO! Sắp theo Comparable/Comparator
PriorityQueue<Integer> pq = new PriorityQueue<>();
pq.offer(3); pq.offer(1);
pq.poll(); // 1 — min-heapDeque<E> extends Queue — thao tác cả 2 đầu. ArrayDeque thay thế Stack legacy.
Concurrent queue: ConcurrentLinkedQueue (lock-free), LinkedBlockingQueue (producer-consumer), DelayQueue (delay).
Dùng cho: producer-consumer, BFS, task scheduling, message buffer, rate limiting.
Default: ArrayDeque (single-thread); LinkedBlockingQueue (multi-thread); PriorityQueue (cần priority).
Queue<E> is a FIFO (First-In-First-Out) collection — "queueing up".
The API has two flavours:
| Operation | Throws exception | Returns special value |
|---|---|---|
| Insert | add(e) | offer(e) → false if full |
| Remove | remove() → NSEE | poll() → null if empty |
| Peek | element() → NSEE | peek() → null if empty |
Use offer/poll/peek to avoid exceptions on empty.
// ArrayDeque — RECOMMENDED for plain FIFO
Queue<String> q = new ArrayDeque<>();
q.offer("a"); q.offer("b");
q.poll(); // "a"
// PriorityQueue — NOT FIFO! Orders by Comparable/Comparator
PriorityQueue<Integer> pq = new PriorityQueue<>();
pq.offer(3); pq.offer(1);
pq.poll(); // 1 — min-heapDeque<E> extends Queue — both-end operations. ArrayDeque replaces the legacy Stack.
Concurrent queues: ConcurrentLinkedQueue (lock-free), LinkedBlockingQueue (producer-consumer), DelayQueue (delayed).
Use for: producer-consumer, BFS, task scheduling, message buffering, rate limiting.
Defaults: ArrayDeque (single-thread); LinkedBlockingQueue (multi-thread); PriorityQueue (priority).