В этом руководстве мы узнаем об интерфейсе Deque, о том, как его использовать, и о его методах.
Deque
Интерфейс рамок коллекций Java обеспечивает функциональность двухцокольных очередей. Расширяет Queue
интерфейс.
Работа Deque
В обычной очереди элементы добавляются сзади и удаляются спереди. Однако в двухсторонней очереди мы можем вставлять и удалять элементы как спереди, так и сзади .
Классы, реализующие Deque
Чтобы использовать функциональные возможности Deque
интерфейса, нам нужно использовать классы, которые его реализуют:
- ArrayDeque
- LinkedList
Как пользоваться Deque?
В Java мы должны импортировать используемый java.util.Deque
пакет Deque
.
// Array implementation of Deque Deque animal1 = new ArrayDeque(); // LinkedList implementation of Deque Deque animal2 = new LinkedList();
Здесь мы создали объекты animal1 и animal2 классов ArrayDeque и LinkedList соответственно. Эти объекты могут использовать функции Deque
интерфейса.
Методы деке
Поскольку Deque
расширяет Queue
интерфейс, он наследует все методы интерфейса Queue.
Помимо методов, доступных в Queue
интерфейсе, Deque
интерфейс также включает следующие методы:
- addFirst () - добавляет указанный элемент в начало двухсторонней очереди . Выдает исключение, если двухсторонняя очередь заполнена.
- addLast () - добавляет указанный элемент в конец двухсторонней очереди . Выдает исключение, если двухсторонняя очередь заполнена.
- offerFirst () - добавляет указанный элемент в начало двухсторонней очереди . Возвращает,
false
если двухсторонняя очередь заполнена. - offerLast () - добавляет указанный элемент в конец двухсторонней очереди . Возвращает,
false
если двухсторонняя очередь заполнена. - getFirst () - возвращает первый элемент двухсторонней очереди. Выдает исключение, если двухсторонняя очередь пуста.
- getLast () - возвращает последний элемент двухсторонней очереди . Выдает исключение, если двухсторонняя очередь пуста.
- peekFirst () - возвращает первый элемент двухсторонней очереди . Возвращает,
null
если двухсторонняя очередь пуста. - peekLast () - возвращает последний элемент двухсторонней очереди . Возвращает,
null
если двухсторонняя очередь пуста. - removeFirst () - возвращает и удаляет первый элемент двухсторонней очереди . Выдает исключение, если двухсторонняя очередь пуста.
- removeLast () - возвращает и удаляет последний элемент двухсторонней очереди . Выдает исключение, если двухсторонняя очередь пуста.
- pollFirst () - возвращает и удаляет первый элемент двухсторонней очереди . Возвращает,
null
если двухсторонняя очередь пуста. - pollLast () - возвращает и удаляет последний элемент двухсторонней очереди . Возвращает,
null
если двухсторонняя очередь пуста.
Deque как структура данных стека
Stack
Класс Java Collections
основы обеспечивает реализацию стека.
Однако рекомендуется использовать Deque
в качестве стека вместо класса Stack. Это потому, что методы Stack
синхронизированы.
Вот методы, которые Deque
интерфейс предоставляет для реализации стека:
push()
- добавляет элемент в начало двухсторонней очередиpop()
- удаляет элемент из начала двухсторонней очередиpeek()
- возвращает элемент с начала двухсторонней очереди
Реализация Deque в классе ArrayDeque
import java.util.Deque; import java.util.ArrayDeque; class Main ( public static void main(String() args) ( // Creating Deque using the ArrayDeque class Deque numbers = new ArrayDeque(); // add elements to the Deque numbers.offer(1); numbers.offerLast(2); numbers.offerFirst(3); System.out.println("Deque: " + numbers); // Access elements of the Deque int firstElement = numbers.peekFirst(); System.out.println("First Element: " + firstElement); int lastElement = numbers.peekLast(); System.out.println("Last Element: " + lastElement); // Remove elements from the Deque int removedNumber1 = numbers.pollFirst(); System.out.println("Removed First Element: " + removedNumber1); int removedNumber2 = numbers.pollLast(); System.out.println("Removed Last Element: " + removedNumber2); System.out.println("Updated Deque: " + numbers); ) )
Вывод
Дека: (3, 1, 2) Первый элемент: 3 Последний элемент: 2 Удален первый элемент: 3 Удален последний элемент: 2 Обновленный Дека: (1)
Чтобы узнать больше, посетите Java ArrayDeque.