English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Основной учебник Java

Java Управление потоком

Java Массив

Java Ориентированность на объекты (I)

Java Ориентированность на объекты (II)

Java Ориентированность на объекты (III)

Обработка исключений Java

Java Список (List)

Java Queue (очередь)

Java Map коллекция

Java Set коллекция

Java Вход/Выход (I/O)

Java Reader/Writer

Другие темы Java

Интерфейс Deque Java

В этом руководстве мы будем изучать интерфейс Deque, как использовать его и его методы.

Интерфейс Deque в Java Collection Framework предоставляет функции двусторонней очереди (Deque). Он наследует интерфейс Queue.

Принцип работы двусторонней очереди

В обычной очереди элементы добавляются сзади, а удаляются спереди. Однако, в двусторонней очереди мы можемВставка и удаление элементов с двух сторон.

Классы, реализующие Deque

Чтобы использовать функции интерфейса Deque, нам нужно использовать классы, реализующие этот интерфейс:

Как использовать Deque?

В Java我们必须 импортировать пакет java.util.Deque, который我们要 использовать.

Deque<String> animal1 = new ArrayDeque<>();
Deque<String> animal2 = new LinkedList<>();

Здесь мы создаем объекты класса ArrayDeque и LinkedList animal1 и animal2. Эти объекты могут использовать функции интерфейса 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 Framework предоставляет реализацию стека.

Но рекомендуется использовать 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) {
        //создание Deque с помощью класса ArrayDeque 
        Deque<Integer> numbers = new ArrayDeque<>();
        //добавление элементов в Deque
        numbers.offer(1);
        numbers.offerLast(2);
        numbers.offerFirst(3);
        System.out.println("Deque: " + numbers);
        //доступ к элементам Deque
        int firstElement = numbers.peekFirst();
        System.out.println("первый элемент: " + firstElement);
        int lastElement = numbers.peekLast();
        System.out.println("Последний элемент: " + lastElement);
        //Удалить элемент из Deque
        int removedNumber1 = numbers.pollFirst();
        System.out.println("Удалить первый элемент: " + removedNumber1);
        int removedNumber2 = numbers.pollLast();
        System.out.println("Удалить последний элемент: " + removedNumber2);
        System.out.println("Обновленный Deque: " + numbers);
    }
}

Результат вывода

Deque: [3, 1, 2]
Первый элемент: 3
Последний элемент: 2
Удалить первый элемент: 3
Удалить последний элемент: 2
Обновленный Deque: [1]

Чтобы узнать больше информации, пожалуйста, посетитеArrayDeque Java.