English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
В этом примере мы будем изучать реализацию структуры данных очередь на Java.
Чтобы понять этот пример, убедитесь, что вы сначала ознакомились с следующими учебниками:
public class Queue { int SIZE = 5; int items[] = new int[SIZE]; int front, rear; Queue() { front = -1; rear = -1; } // 检查队列是否已满 boolean isFull() { if (front == 0 && rear == SIZE - 1) { return true; } return false; } // 检查队列是否为空 boolean isEmpty() { if (front == -1) return true; else return false; } // 将元素插入队列 void enQueue(int element) { // 如果队列已满 if (isFull()) { System.out.println("Queue is full"); } else { if (front == -1) { // 标记 front 表示队列的第一个元素 front = 0; } rear++; // 在后面插入元素 items[rear] = element; System.out.println("Insert " + element); } } // 从队列中删除元素 int deQueue() { int element; // 如果队列为空 if (isEmpty()) { System.out.println("Queue is empty"); return (-1); } else { //Удаление элемента с передней стороны очереди element = items[front]; // 如果队列中只有一个元素 if (front >= rear) { front = -1; rear = -1; } else { // 将下一个元素标记为 front front++; } System.out.println(element + " Deleted"); return (element); } } // 显示队列元素 void display() { int i; if (isEmpty()) { System.out.println("Empty Queue"); } else { // 显示队列的front System.out.println("\nFront index-> " + front); // 显示队列的元素 System.out.println("Items -> "); for (i = front; i <= rear; i++) System.out.print(items[i] + " "); // Показать заднюю часть очереди System.out.println("\nЗадний индекс-> " + rear); } } public static void main(String[] args) { // Создание объекта класса Queue Queue q = new Queue(); // Попытка удалить элемент из очереди // Текущая очередь пуста // Поэтому их нельзя удалить q.deQueue(); // Добавление элементов в очередь for(int i = 1; i < 6; i++) { q.enQueue(i); } // Не возможно добавить 6-й элемент в очередь, так как очередь полна q.enQueue(6); q.display(); // deQueue удаляет первый добавленный элемент, например: 1 q.deQueue(); //Теперь у нас только 4 элемента q.display(); } }
Результат вывода
Очередь пуста Вставить 1 Вставить 2 Вставить 3 Вставить 4 Вставить 5 Очередь полна Передний индекс-> 0 Элементы-> 1 2 3 4 5 Задний индекс-> 4 1 Удален Передний индекс-> 1 Элементы-> 2 3 4 5 Задний индекс-> 4
В предыдущем примере мы реализовали структуру данных очередь на Java.
Java предоставляет встроенный интерфейс Queue, который можно использовать для реализации очереди.
import java.util.Queue; import java.util.LinkedList; class Main { public static void main(String[] args) { //Использование класса LinkedList для создания очереди Queue<Integer> numbers = new LinkedList<>(); // enqueue //Вставка элемента в конец очереди numbers.offer(1); numbers.offer(2); numbers.offer(3); System.out.println("Очередь: " + numbers); // dequeue //Удаление элемента с передней стороны очереди int removedNumber = numbers.poll(); System.out.println("Удаленный элемент: " + removedNumber); System.out.println("В后排 после удаления: " + numbers); } }
Результат вывода
Очередь: [1, 2, 3] Удаленный элемент: 1 В后排 после удаления: [2, 3]
В примере выше мы использовали интерфейс Java Queue для реализации очереди. Здесь мы используем класс LinkedList для реализации интерфейса Queue.
Numbers.offer() - Вставить элемент в конец очереди
Numbers.poll() - Удалить элемент с начала очереди
Обратите внимание, что при создании очереди мы используем угловые скобки <Integer>. Это означает, что очередь является генерическим типом. Для получения更多信息 о генериках посетитеJava генерик.
Мы также можем использовать другие интерфейсы и классы для замены Queue и LinkedList. Например: