Java Deque

В этом руководстве мы узнаем об интерфейсе 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.

Интересные статьи...