English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
В этом руководстве мы изучим интерфейс Java Queue и его методы.
Интерфейс Queue в Java Collection Framework предоставляет функции структуры данных очереди. Он наследует интерфейс Collection.
Поскольку Queue является интерфейсом, мы не можем предоставить его прямой реализацией.
Для использования функций Queue нам нужно использовать классы, реализующие его:
Интерфейс Queue может быть наследован различными подинтерфейсами:
Deque
BlockingQueue
BlockingDeque
В очереди, сfirst in first outспособа хранения и доступа к элементам. То есть,Добавление элементов сзади, удаление элементов спереди.
В Java, для использования Queue необходимо импортировать пакет java.util.Queue.
// Использование LinkedList для создания Queue<String> animal1 = new LinkedList<>(); // Использование ArrayDeque для создания Queue<String> animal2 = new ArrayDeque<>(); // Использование PriorityQueue для создания Queue<String> animal 3 = new PriorityQueue<>();
Здесь мы создаем объекты класса LinkedList, ArrayDeque и PriorityQueue Animal1, Animal2 и Animal3. Эти объекты могут использовать функции интерфейса 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) { // Создание Queue с использованием класса LinkedList Queue<Integer> numbers = new LinkedList<>(); // Добавление элементов в Queue numbers.offer(1); numbers.offer(2); numbers.offer(3); System.out.println("Queue: " + numbers); // Доступ к элементу Queue int accessedNumber = numbers.peek(); System.out.println("Доступ к элементу: " + accessedNumber); // Удаление элемента из Queue int removedNumber = numbers.poll(); System.out.println("Удаление элемента: " + removedNumber); System.out.println("Обновленный Queue: " + numbers); } }
Результат вывода
Queue: [1, 2, 3] Доступ к элементу: 1 Удаление элемента: 1 Обновленная Queue: [2, 3]
Для получения дополнительной информации, пожалуйста, посетитеJava LinkedList.
2. Реализация класса PriorityQueue
import java.util.Queue; import java.util.PriorityQueue; class Main { public static void main(String[] args) { // Создание очереди с использованием класса PriorityQueue Queue<Integer> numbers = new PriorityQueue<>(); // Добавление элементов в Queue numbers.offer(5); numbers.offer(1); numbers.offer(2); System.out.println("Queue: " + numbers); //Доступ к элементу Queue int accessedNumber = numbers.peek(); System.out.println("Доступ к элементу: " + accessedNumber); //Удаление элемента из Queue int removedNumber = numbers.poll(); System.out.println("Удаление элемента: " + removedNumber); System.out.println("Обновленный Queue: " + numbers); } }
Результат вывода
Queue: [1, 5, 2] Доступ к элементу: 1 Удаление элемента: 1 Обновленный Queue: [2, 5]
Для получения дополнительной информации, пожалуйста, посетитеPriorityQueue Java.
В следующем руководстве мы подробно рассмотрим различные подинтерфейсы и их реализации интерфейса Queue.