Mediumqueuedeque
Что такое Queue и Deque?
1Постановка
Разберём, что от вас хотят в этом вопросе и как к нему подступиться на собеседовании.
2Решение
Queue<E> — FIFO очередь. Deque<E> — double-ended queue, добавить/взять с обоих концов; может использоваться как queue (FIFO) или stack (LIFO).
// Deque как стек (LIFO) — лучше Stack, использовать ArrayDeque
Deque<String> stack = new ArrayDeque<>();
stack.push("a"); // addFirst
stack.pop(); // removeFirst
// Queue (FIFO)
Queue<String> q = new LinkedList<>();
q.offer("a"); // добавить, false если полон
String head = q.poll(); // убрать, null если пусто
// PriorityQueue — heap, head = наименьший
PriorityQueue<Integer> pq = new PriorityQueue<>();
pq.offer(3); pq.offer(1);
pq.poll(); // 1 (наименьший)- Queue:
offer/poll/peek(null при пусто) vsadd/remove/element(exception); ArrayDequeрекомендуется для стека/дека;Stack— legacy;- Concurrent:
ArrayBlockingQueue,LinkedBlockingQueue,LinkedBlockingDeque,ConcurrentLinkedQueue.
3Как отвечать
- Сначала уточните условия и ограничения, покажите аналитическое мышление.
- Рассуждайте вслух — интервьюеру важен ход мысли, а не только финальный ответ.
- Оцените сложность по времени и памяти (Big-O), если это алгоритмический вопрос.
💡
На реальном собеседовании Alffert подскажет развёрнутый ответ в реальном времени.