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

Интерфейс Queue Java

В этом руководстве мы изучим интерфейс Java Queue и его методы.

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

Классы, реализующие очередь

Поскольку Queue является интерфейсом, мы не можем предоставить его прямой реализацией.

Для использования функций Queue нам нужно использовать классы, реализующие его:

Интерфейсы, наследующие Queue

Интерфейс Queue может быть наследован различными подинтерфейсами:

  • Deque

  • BlockingQueue

  • BlockingDeque

Рабочий процесс структуры данных очереди

В очереди, сfirst in first outспособа хранения и доступа к элементам. То есть,Добавление элементов сзади, удаление элементов спереди.

Как использовать очередь (Queue)?

В 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

Интерфейс Queue включает все методы интерфейса Collection. Это потому, что Collection является супер-интерфейсом Queue.

Некоторые常用 методы интерфейса Queue:

  • add() - Вставляет заданный элемент в очередь. Если задача успешна, то метод add() возвращает true,否则 вызывает исключение.

  • offer() - Вставляет заданный элемент в очередь. Если задача успешна, то метод offer() возвращает true,否则 возвращает false.

  • element() - Возвращает элемент в начале очереди. Если очередь пуста, то вызывает исключение.

  • peek() - Возвращает элемент в начале очереди. Если очередь пуста, то возвращает null.

  • remove() - Возвращает и удаляет элемент в начале очереди. Если очередь пуста, то вызывает исключение.

  • poll() - Возвращает и удаляет элемент в начале очереди. Если очередь пуста, то возвращает null.

Реализация интерфейса Queue

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.