Рубрики
Без рубрики

Реализация очереди в Java с использованием массива

Реализация очереди в Java с использованием массива. Как реализовать структуру данных очереди в Java с использованием функций array, Queue enqueue(), dequeue(), isEmpty ().

Автор оригинала: 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)

Вывод

Очередь-это одна из простейших структур данных. Мы можем реализовать его с помощью массива или списка.