Назад к вопросам
Middle
75
questionbank
Сравните интерфейсы Queue и Deque.
Sobes Copilot
Получайте ответы в реальном времени
Ответ от нейросети
sobes.tech AI
Queue представляет собой коллекцию элементов, предназначенную для хранения элементов перед их обработкой. Следует принципам FIFO (First-In, First-Out).
Deque (Double-Ended Queue) — двусторонняя очередь. Поддерживает вставку и удаление элементов как в начале, так и в конце. Объединяет функциональность Queue и Stack.
Основные отличия:
| Характеристика | Queue | Deque |
|---|---|---|
| Принцип работы | FIFO | FIFO (как очередь), LIFO (как стек) |
| Вставка элементов | Только в конец | В начало и в конец |
| Удаление элементов | Только из начала | Из начала и из конца |
| Интерфейсы-наследники | PriorityQueue, LinkedList, ArrayDeque | ArrayDeque, LinkedList |
Deque предоставляет более гибкий набор операций для работы с обоими концами коллекции.
// Пример использования Queue
Queue<String> queue = new LinkedList<>();
queue.offer("element1"); // Вставка
queue.offer("element2");
String first = queue.poll(); // Удаление
System.out.println(first); // element1
// Пример использования Deque как очереди
Deque<String> dequeAsQueue = new LinkedList<>();
dequeAsQueue.offer("element1"); // Вставка в конец
dequeAsQueue.offer("element2");
String firstDeque = dequeAsQueue.poll(); // Удаление из начала
System.out.println(firstDeque); // element1
// Пример использования Deque как стека
Deque<String> dequeAsStack = new LinkedList<>();
dequeAsStack.push("element1"); // Вставка в начало
dequeAsStack.push("element2");
String topDeque = dequeAsStack.pop(); // Удаление из начала
System.out.println(topDeque); // element2