Автор оригинала: Pankaj Kumar.
Что такое очередь?
Очередь-это особый тип структуры данных, которая предназначена для хранения элементов перед обработкой и обработки элементов способом FIFO (первый вход-первый выход). Это часть платформы коллекций java . В этом уроке мы изучим реализацию очереди в Java с использованием массива.
Основные Функции Очереди
Очередь должна выполнять следующие функции:
поставить в очередь(obj)
– вставить элемент в очередь.удаление из очереди()
– удаление и возврат наименее последнего элемента из очереди.isEmpty()
– возвращает true, если очередь пуста, иначе false.
Реализация очереди в Java
Мы можем реализовать основные функции очереди, используя массив .
Вот полный код для реализации очереди в Java.
package com.journaldev.java; public class MyQueue { public static final int DEFAULT_SIZE = 5; private Object data[]; private int index; public MyQueue() { data = new Object[DEFAULT_SIZE]; } public MyQueue(int size) { data = new Object[size]; } public boolean isEmpty() { return index == 0; } public void enqueue(Object obj) throws Exception { if (index == data.length - 1) { throw new Exception("Queue is full. Dequeue some objects"); } this.data[index] = obj; this.index++; } public Object dequeue() throws Exception { if (isEmpty()) throw new Exception("Queue is empty"); Object obj = this.data[0]; for (int i = 0; i < this.index - 1; i++) { data[i] = data[i + 1]; } this.index--; return obj; } }
Важные Моменты
- Существует два конструктора – один для создания очереди с размером по умолчанию, другой используется для указания размера очереди.
- Мы используем частную целочисленную переменную “индекс” для управления элементами очереди.
- Мы используем массив объектов, чтобы мы могли хранить объекты любого типа в очереди. Мы также можем использовать дженерики здесь, но я избегаю этого, чтобы упростить программу.
- Если очередь заполнена, функция enqueue() выдаст исключение с соответствующим сообщением.
- Если очередь пуста и мы вызываем функцию dequeue (), возникает исключение.
Ограничения реализации Методы очереди не синхронизированы и не являются потокобезопасными. Существует вероятность несоответствия данных, если вы используете эту реализацию в многопоточной среде.
Тестовая программа для проверки реализации очереди
Давайте протестируем нашу реализацию очереди с помощью некоторых вызовов функций enqueue() и dequeue ().
MyQueue queue = new MyQueue(); queue.enqueue("1"); System.out.println(queue.dequeue()); queue.enqueue("2"); queue.enqueue("3"); queue.enqueue("4"); System.out.println(queue.dequeue()); queue.enqueue("5"); queue.enqueue("6"); // queue.enqueue("7"); // queue.enqueue("8");
Выход:
1 2
Если вы раскомментируете последние две строки, очередь заполнится и возникнет исключение.
Exception in thread "main" java.lang.Exception: Queue is full. Dequeue some objects at com.journaldev.java.MyQueue.enqueue(MyQueue.java:25) at com.journaldev.java.MyQueue.main(MyQueue.java:56)
Вывод
Очередь-это одна из простейших структур данных. Мы можем реализовать его с помощью массива или списка.