Автор оригинала: 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)
Вывод
Очередь-это одна из простейших структур данных. Мы можем реализовать его с помощью массива или списка.