logo

Java Queue

Front je ďalší druh lineárnej dátovej štruktúry, ktorá sa používa na ukladanie prvkov rovnako ako akákoľvek iná dátová štruktúra, ale určitým spôsobom. Jednoducho povedané, môžeme povedať, že front je typ dátovej štruktúry v programovacom jazyku Java, ktorý ukladá prvky rovnakého druhu. Komponenty vo fronte sú uložené v správaní FIFO (First In, First Out). V kolekcii fronty sú dva konce, t. j. predný a zadný. Fronta má dva konce, predný a zadný.

Nasledujúci obrázok dokonale popisuje vlastnosť FIFO (First In, First Out) frontu Java.

Java Queue

Ako je vysvetlené na predchádzajúcom obrázku, môžeme vidieť, že front je lineárna dátová štruktúra s dvoma terminálmi, t. j. štart (predný) a koniec (zadný). Komponenty sa pridávajú do frontu zo zadného konca frontu a komponenty sa extrahujú z predného konca frontu.

Queue je rozhranie v Java ktorý patrí do balíka Java.util . Rozširuje tiež rozhranie kolekcie .

Všeobecná reprezentácia rozhrania Java Queue je uvedená nižšie:

java nahradiť všetok reťazec
 public interface Queue extends Collection 

Ako sme už diskutovali vyššie, že front je rozhranie, preto môžeme tiež povedať, že frontu nemožno vytvoriť inštanciu, pretože rozhrania nemožno vytvoriť. Ak chce používateľ implementovať funkčnosť rozhrania Queue v Jave, potom je povinné mať nejaké pevné triedy, ktoré implementujú rozhranie Queue.

V programovacom jazyku Java existujú dve rôzne triedy, ktoré sa používajú na implementáciu rozhrania Queue. Tieto triedy sú:

kandidátsky kľúč
Java Queue

Charakteristika Java Queue

Java Queue možno považovať za jednu z najdôležitejších dátových štruktúr vo svete programovania. Java Queue je atraktívny svojimi vlastnosťami. Významné vlastnosti dátovej štruktúry Java Queue sú uvedené takto:

  • Java Queue sa riadi spôsobom FIFO (First In, First Out). Označuje, že prvky sú zaradené do frontu na konci a eliminované spredu.
  • Rozhranie Java Queue poskytuje všetky pravidlá a procesy rozhrania kolekcie, ako je zahrnutie, vymazanie atď.
  • Existujú dve rôzne triedy, ktoré sa používajú na implementáciu rozhrania Queue. Tieto triedy sú LinkedList a PriorityQueue.
  • Okrem týchto dvoch existuje trieda, ktorá je, Array Blocking Queue, ktorá sa používa na implementáciu rozhrania Queue.
  • Existujú dva typy frontov, neobmedzené fronty a ohraničené fronty. Fronty, ktoré sú súčasťou balíka java.util, sú známe ako neobmedzené fronty a ohraničené fronty sú fronty, ktoré sú prítomné v balíku java.util.concurrent.
  • Deque alebo (dvojitý front) je tiež typom frontu, ktorý nesie zahrnutie a vymazanie prvkov z oboch koncov.
  • Deque sa tiež považuje za bezpečné pre vlákna.
  • Blokovacie fronty sú tiež jedným z typov frontov, ktoré sú tiež bezpečné pre vlákna. Blokovacie fronty sa používajú na implementáciu dopytov medzi výrobcami a spotrebiteľmi.
  • Blokovacie fronty nepodporujú prvky null. Ak v blokovacích frontoch vyskúšate akúkoľvek prácu podobnú hodnotám null, vyvolá sa aj výnimka NullPointerException.

Implementácia frontu

Triedy používané pri implementácii Queue

Triedy, ktoré sa používajú na implementáciu funkcií frontu, sú uvedené takto:

Rozhrania používané pri implementácii Queue

Rozhrania Java sa používajú aj pri implementácii frontu Java. Rozhrania, ktoré sa používajú na implementáciu funkcií frontu, sú uvedené takto:

Java Queue
  • O čom
  • Blokovanie frontu
  • Blokovanie Deque
Java Queue

Java Queue Class Methods

Vo fronte Java existuje veľa metód, ktoré sa používajú veľmi bežne. Rozhranie Queue podporuje rôzne metódy, ako je vkladanie, mazanie, nahliadnutie atď. Niektoré operácie frontu Java vyvolávajú výnimku, zatiaľ čo niektoré z týchto operácií vracajú konkrétnu hodnotu, keď je program dokončený.

Poznámka - V Java SE 8 nie sú vykonané žiadne zmeny v kolekcii frontov Java. Tieto metódy, ktoré sú definované nižšie, sú ďalej pripravované v nasledujúcich verziách programovacieho jazyka Java. Napríklad Java SE 9.

Rôzne metódy Java Queue sú definované nižšie:

Metóda Prototyp metódy Popis
pridať boolovské sčítanie (E e) Pridá prvok e do frontu na koniec (koniec) frontu bez porušenia obmedzení kapacity. V prípade úspechu vráti hodnotu true alebo v prípade vyčerpania kapacity vráti IllegalStateException.
nahliadnuť E nahliadnuť () Vráti hlavu (prednú časť) frontu bez jej odstránenia.
element E prvok() Vykoná rovnakú operáciu ako metóda peek (). Vyhodí výnimku NoSuchElementException, keď je front prázdny.
odstrániť E odstrániť() Odstráni hlavu frontu a vráti ju späť. Ak je front prázdny, vyvolá výnimku NoSuchElementException.
anketa E anketa() Odstráni hlavu frontu a vráti ju späť. Ak je front prázdny, vráti hodnotu null.
Ponuka booleovská ponuka (E e) Vložte nový prvok e do frontu bez porušenia kapacitných obmedzení.
veľkosť int size() Vráti veľkosť alebo počet prvkov vo fronte.

Implementácia Java Queue Array

Implementácia frontu nie je taká jednoduchá ako implementácia zásobníka.

Aby sme implementovali front pomocou polí, najprv deklarujeme pole, ktoré obsahuje n počet prvkov.

hiba bukhari

Potom definujeme nasledujúce operácie, ktoré sa majú vykonať v tomto fronte.

1) Zaradiť do poradia: Operácia na vloženie prvku do frontu je Enqueue (funkcia Queue Enqueue v programe). Pre vloženie prvku na zadný koniec musíme najprv skontrolovať, či je front plný. Ak je plný, prvok nemôžeme vložiť. Ak zadný

2) Chvost: Operácia na odstránenie prvku z frontu je Dequeue (funkcia fronta Dequeue v programe). Najprv skontrolujeme, či je front prázdny. Aby operácia vyradenia z frontu fungovala, musí byť vo fronte aspoň jeden prvok.

3) Predná strana: Táto metóda vráti začiatok frontu.

4) Displej: Táto metóda prechádza frontom a zobrazuje prvky frontu.

Program Java Queue

Nasledujúci program Java demonštruje implementáciu Queue.

c boolovská hodnota

QueueArrayImplementation.java

 class Queue { private static int front, rear, capacity; private static int queue[]; Queue(int size) { front = rear = 0; capacity = size; queue = new int[capacity]; } // insert an element into the queue static void queueEnqueue(int item) { // check if the queue is full if (capacity == rear) { System.out.printf('
Queue is full
'); return; } // insert element at the rear else { queue[rear] = item; rear++; } return; } //remove an element from the queue static void queueDequeue() { // check if queue is empty if (front == rear) { System.out.printf('
Queue is empty
&apos;); return; } // shift elements to the right by one place uptil rear else { for (int i = 0; i <rear 0 4 - 1; i++) { queue[i]="queue[i" + 1]; } set queue[rear] to if (rear < capacity) decrement rear rear--; return; print queue elements static void queuedisplay() int i; (front="=" rear) system.out.printf('queue is empty
'); traverse front and for (i="front;" i rear; system.out.printf(' %d , ', queue[i]); of queuefront() system.out.printf('
front element the queue: %d', queue[front]); public class queuearrayimplementation main(string[] args) create a capacity q="new" queue(4); system.out.println('initial queue:'); q.queuedisplay(); inserting in q.queueenqueue(10); q.queueenqueue(30); q.queueenqueue(50); q.queueenqueue(70); system.out.println('queue after enqueue operation:'); q.queuefront(); insert q.queueenqueue(90); q.queuedequeue(); system.out.printf('
queue two dequeue operations:'); pre> <p> <strong>Output:</strong> </p> <pre> Initial Queue: Queue is Empty Queue after Enqueue Operation: 10 , 30 , 50 , 70 , Front Element of the queue: 10 Queue is full 10 , 30 , 50 , 70 , Queue after two dequeue operations: 50 , 70 , Front Element of the queue: 50 </pre> <h2>Java Queue Linked List Implementation</h2> <p>As we have implemented the Queue data structure using Arrays in the above program, we can also implement the Queue using Linked List.</p> <p>We will implement the same methods enqueue, dequeue, front, and display in this program. The difference is that we will be using the Linked List data structure instead of Array.</p> <p>The below program demonstrates the Linked List implementation of Queue in Java.</p> <p> <strong>QueueLLImplementation.java</strong> </p> <pre> class LinkedListQueue { private Node front, rear; private int queueSize; // queue size //linked list node private class Node { int data; Node next; } //default constructor - initially front &amp; rear are null; size=0; queue is empty public LinkedListQueue() { front = null; rear = null; queueSize = 0; } //check if the queue is empty public boolean isEmpty() { return (queueSize == 0); } //Remove item from the front of the queue. public int dequeue() { int data = front.data; front = front.next; if (isEmpty()) { rear = null; } queueSize--; System.out.println(&apos;Element &apos; + data+ &apos; removed from the queue&apos;); return data; } //Add data at the rear of the queue. public void enqueue(int data) { Node oldRear = rear; rear = new Node(); rear.data = data; rear.next = null; if (isEmpty()) { front = rear; } else { oldRear.next = rear; } queueSize++; System.out.println(&apos;Element &apos; + data+ &apos; added to the queue&apos;); } //print front and rear of the queue public void print_frontRear() { System.out.println(&apos;Front of the queue:&apos; + front.data + &apos; Rear of the queue:&apos; + rear.data); } } class QueueLLImplementation{ public static void main(String a[]){ LinkedListQueue queue = new LinkedListQueue(); queue.enqueue(6); queue.enqueue(3); queue.print_frontRear(); queue.enqueue(12); queue.enqueue(24); queue.dequeue(); queue.dequeue(); queue.enqueue(9); queue.print_frontRear(); } } </pre> <p> <strong>Output:</strong> </p> <pre> Element 6 added to the queue Element 3 added to the queue Front of the queue:6 Rear of the queue:3 Element 12 added to the queue Element 24 added to the queue Element 6 removed from the queue Element 3 removed from the queue Element 9 added to the queue Front of the queue:12 Rear of the queue:9 </pre> <hr></rear>

Implementácia prepojeného zoznamu Java Queue

Keďže sme implementovali dátovú štruktúru Queue pomocou Arrays vo vyššie uvedenom programe, môžeme tiež implementovať Queue pomocou Linked List.

V tomto programe implementujeme rovnaké metódy enqueue, dequeue, front a display. Rozdiel je v tom, že namiesto Array budeme používať dátovú štruktúru Linked List.

Nižšie uvedený program demonštruje implementáciu Linked List pre Queue v Jave.

QueueLLImplementation.java

inak java
 class LinkedListQueue { private Node front, rear; private int queueSize; // queue size //linked list node private class Node { int data; Node next; } //default constructor - initially front &amp; rear are null; size=0; queue is empty public LinkedListQueue() { front = null; rear = null; queueSize = 0; } //check if the queue is empty public boolean isEmpty() { return (queueSize == 0); } //Remove item from the front of the queue. public int dequeue() { int data = front.data; front = front.next; if (isEmpty()) { rear = null; } queueSize--; System.out.println(&apos;Element &apos; + data+ &apos; removed from the queue&apos;); return data; } //Add data at the rear of the queue. public void enqueue(int data) { Node oldRear = rear; rear = new Node(); rear.data = data; rear.next = null; if (isEmpty()) { front = rear; } else { oldRear.next = rear; } queueSize++; System.out.println(&apos;Element &apos; + data+ &apos; added to the queue&apos;); } //print front and rear of the queue public void print_frontRear() { System.out.println(&apos;Front of the queue:&apos; + front.data + &apos; Rear of the queue:&apos; + rear.data); } } class QueueLLImplementation{ public static void main(String a[]){ LinkedListQueue queue = new LinkedListQueue(); queue.enqueue(6); queue.enqueue(3); queue.print_frontRear(); queue.enqueue(12); queue.enqueue(24); queue.dequeue(); queue.dequeue(); queue.enqueue(9); queue.print_frontRear(); } } 

Výkon:

 Element 6 added to the queue Element 3 added to the queue Front of the queue:6 Rear of the queue:3 Element 12 added to the queue Element 24 added to the queue Element 6 removed from the queue Element 3 removed from the queue Element 9 added to the queue Front of the queue:12 Rear of the queue:9