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.
java
// 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).