В этом руководстве мы узнаем об интерфейсе Java Queue и его методах.
Queue
Интерфейс рамок коллекций Java обеспечивает функциональные структуры данных очереди. Расширяет Collection
интерфейс.
Классы, реализующие очередь
Поскольку Queue
это интерфейс, мы не можем предоставить его прямую реализацию.
Чтобы использовать функциональные возможности Queue
, нам нужно использовать классы, которые его реализуют:
- ArrayDeque
- LinkedList
- PriorityQueue
Интерфейсы, расширяющие очередь
Queue
Интерфейс также расширен различными субинтерфейсов:
Deque
BlockingQueue
BlockingDeque
Работа со структурой данных очереди
В очередях элементы хранятся и доступны по принципу «первым пришел - первым ушел» . То есть элементы добавляются сзади и удаляются спереди .
Как использовать очередь?
В Java мы должны импортировать java.util.Queue
пакет, чтобы использовать Queue
.
// LinkedList implementation of Queue Queue animal1 = new LinkedList(); // Array implementation of Queue Queue animal2 = new ArrayDeque(); // Priority Queue implementation of Queue Queue animal 3 = new PriorityQueue();
Здесь мы создали объекты animal1, animal2 и animal3 классов LinkedList
, ArrayDeque
и PriorityQueue
соответственно. Эти объекты могут использовать функции Queue
интерфейса.
Методы очереди
Queue
Интерфейс включает в себя все методы Collection
интерфейса. Это потому, что Collection
это супер-интерфейс Queue
.
Некоторые из наиболее часто используемых методов Queue
интерфейса:
- add () - вставляет указанный элемент в очередь. Если задача выполнена успешно,
add()
возвращаетсяtrue
, если нет - выдает исключение. - offer () - вставляет указанный элемент в очередь. Если задача выполнена успешно,
offer()
возвращаетсяtrue
, если нет - возвращаетсяfalse
. - element () - возвращает заголовок очереди. Выдает исключение, если очередь пуста.
- peek () - возвращает заголовок очереди. Возвращает,
null
если очередь пуста. - remove () - возвращает и удаляет заголовок очереди. Выдает исключение, если очередь пуста.
- poll () - возвращает и удаляет заголовок очереди. Возвращает,
null
если очередь пуста.
Реализация интерфейса очереди
1. Реализация класса LinkedList
import java.util.Queue; import java.util.LinkedList; class Main ( public static void main(String() args) ( // Creating Queue using the LinkedList class Queue numbers = new LinkedList(); // offer elements to the Queue numbers.offer(1); numbers.offer(2); numbers.offer(3); System.out.println("Queue: " + numbers); // Access elements of the Queue int accessedNumber = numbers.peek(); System.out.println("Accessed Element: " + accessedNumber); // Remove elements from the Queue int removedNumber = numbers.poll(); System.out.println("Removed Element: " + removedNumber); System.out.println("Updated Queue: " + numbers); ) )
Вывод
Очередь: (1, 2, 3) Доступный элемент: 1 Удаленный элемент: 1 Обновленная очередь: (2, 3)
Чтобы узнать больше, посетите Java LinkedList.
2. Реализация класса PriorityQueue
import java.util.Queue; import java.util.PriorityQueue; class Main ( public static void main(String() args) ( // Creating Queue using the PriorityQueue class Queue numbers = new PriorityQueue(); // offer elements to the Queue numbers.offer(5); numbers.offer(1); numbers.offer(2); System.out.println("Queue: " + numbers); // Access elements of the Queue int accessedNumber = numbers.peek(); System.out.println("Accessed Element: " + accessedNumber); // Remove elements from the Queue int removedNumber = numbers.poll(); System.out.println("Removed Element: " + removedNumber); System.out.println("Updated Queue: " + numbers); ) )
Вывод
Очередь: (1, 5, 2) Доступный элемент: 1 Удаленный элемент: 1 Обновленная очередь: (2, 5)
Чтобы узнать больше, посетите Java PriorityQueue.
В следующих уроках мы подробно узнаем о различных субинтерфейсах Queue
интерфейса и их реализации.