Рубрики

Интерфейс Deque в Java с примером

Интерфейс java.util.Deque является подтипом интерфейса java.util.Queue . Deque связан с двусторонней очередью, которая поддерживает добавление или удаление элементов с любого конца структуры данных, его можно использовать как очередь (first-in-first-out / FIFO) или как стек (last- in-first-out / LIFO) . Это быстрее, чем Stack и LinkedList.
Это иерархия интерфейса Deque в Java:

Несколько важных особенностей Deque:

  • Он обеспечивает поддержку массива с изменяемыми размерами и помогает в неограниченной емкости, чтобы увеличить массив в соответствии с использованием.
  • Запросы массива запрещают использование элементов Null и не допускают никаких таких элементов.
  • Любой одновременный доступ несколькими потоками не поддерживается.
  • В отсутствие внешней синхронизации Deque не является поточно-ориентированным.

Методы Deque:

  1. add (element) : добавляет элемент в хвост.
  2. addFirst (element) : добавляет элемент в голову.
  3. addLast (element) : добавляет элемент в хвост.
  4. offer (element) : добавляет элемент в хвост и возвращает логическое значение, чтобы объяснить, была ли вставка успешной.
  5. offerFirst (element) : добавляет элемент в заголовок и возвращает логическое значение, чтобы объяснить, была ли вставка успешной.
  6. offerLast (element) : добавляет элемент в хвост и возвращает логическое значение, чтобы объяснить, была ли вставка успешной.
  7. iterator () : возвращает итератор для этой очереди.
  8. downndingIterator () : возвращает итератор с обратным порядком для этой очереди.
  9. push (element): добавляет элемент в голову.
  10. pop (element): удаляет элемент из головы и возвращает его.
  11. removeFirst (): удаляет элемент в заголовке .
  12. removeLast (): удаляет элемент в хвосте.
  13. poll (): извлекает и удаляет заголовок очереди, представленной этим deque (другими словами, первый элемент этого deque), или возвращает null, если этот deque пуст.
  14. pollFirst (): Извлекает и удаляет первый элемент этой deque или возвращает null, если эта deque пуста.
  15. pollLast (): Извлекает и удаляет последний элемент этой deque или возвращает null, если эта deque пуста.
  16. peek (): Извлекает, но не удаляет, начало очереди, представленной этим deque (другими словами, первый элемент этого deque), или возвращает null, если этот deque пуст.
  17. peekFirst (): Извлекает, но не удаляет первый элемент этой deque, или возвращает null, если эта deque пуста.
  18. peekLast (): Извлекает, но не удаляет последний элемент этой deque, или возвращает null, если эта deque пуста.

Суммируя методы, получим:

Ниже программа иллюстрирует несколько операций интерфейса Deque:

// Java-программа для демонстрации работы
// Deque в Java

import java.util.*;

  

public class DequeExample

{

    public static void main(String[] args)

    {

        Deque<String> deque = new LinkedList<String>();

  

        // Мы можем добавлять элементы в очередь различными способами

        deque.add("Element 1 (Tail)"); // добавить в хвост

        deque.addFirst("Element 2 (Head)");

        deque.addLast("Element 3 (Tail)");

        deque.push("Element 4 (Head)"); // добавить в голову

        deque.offer("Element 5 (Tail)");

        deque.offerFirst("Element 6 (Head)");

        deque.offerLast("Element 7 (Tail)");

  

        System.out.println(deque + "\n");

  

        // Перебираем элементы очереди.

        System.out.println("Standard Iterator");

        Iterator iterator = deque.iterator();

        while (iterator.hasNext())

            System.out.println("\t" + iterator.next());

  

  

        // Итератор обратного порядка

        Iterator reverse = deque.descendingIterator();

        System.out.println("Reverse Iterator");

        while (reverse.hasNext())

            System.out.println("\t" + reverse.next());

  

        // Peek возвращает голову, не удаляя

        // это из дек

        System.out.println("Peek " + deque.peek());

        System.out.println("After peek: " + deque);

  

        // Pop возвращает голову и удаляет ее из

        // deque

        System.out.println("Pop " + deque.pop());

        System.out.println("After pop: " + deque);

  

        // Мы можем проверить, существует ли конкретный элемент

        // в деке

        System.out.println("Contains element 3: " +

                        deque.contains("Element 3 (Tail)"));

  

        // Мы можем удалить первый / последний элемент.

        deque.removeFirst();

        deque.removeLast();

        System.out.println("Deque after removing " +

                            "first and last: " + deque);

  

    }

}

Выход:

[Element 6 (Head), Element 4 (Head), Element 2 (Head), Element 1 (Tail), 
                   Element 3 (Tail), Element 5 (Tail), Element 7 (Tail)]

Standard Iterator
    Element 6 (Head)
    Element 4 (Head)
    Element 2 (Head)
    Element 1 (Tail)
    Element 3 (Tail)
    Element 5 (Tail)
    Element 7 (Tail)
Reverse Iterator
    Element 7 (Tail)
    Element 5 (Tail)
    Element 3 (Tail)
    Element 1 (Tail)
    Element 2 (Head)
    Element 4 (Head)
    Element 6 (Head)
Peek Element 6 (Head)
After peek: [Element 6 (Head), Element 4 (Head), Element 2 (Head), Element 1 (Tail), 
                               Element 3 (Tail), Element 5 (Tail), Element 7 (Tail)]
Pop Element 6 (Head)
After pop: [Element 4 (Head), Element 2 (Head), Element 1 (Tail), Element 3 (Tail), 
                                                 Element 5 (Tail), Element 7 (Tail)]
Contains element 3: true
Deque after removing first and last: [Element 2 (Head), Element 1 (Tail), 
                                                 Element 3 (Tail), Element 5 (Tail)]

Deque в Коллекционной Иерархии

Эта статья предоставлена Пратиком Агарвалом . Если вы как GeeksforGeeks и хотели бы внести свой вклад, вы также можете написать статью с помощью contribute.geeksforgeeks.org или по почте статьи contribute@geeksforgeeks.org. Смотрите свою статью, появляющуюся на главной странице GeeksforGeeks, и помогите другим вундеркиндам.

Пожалуйста, пишите комментарии, если вы обнаружите что-то неправильное или вы хотите поделиться дополнительной информацией по обсуждаемой выше теме.

Рекомендуемые посты:

Интерфейс Deque в Java с примером

0.00 (0%) 0 votes