logo

Rozhranie frontov v Java

Rozhranie frontu je súčasťou java.util balík a rozširuje Kolekcia . Ukladá a spracováva údaje v poradí, kde sa prvky pridávajú vzadu a odstránia sa spredu.

Kľúčové funkcie

  • FIFO OBJEDNÁVKA: Prvky sa spracúvajú v poradí, v akom boli vložené (prvé prvé).
  • Žiadny náhodný prístup: Na rozdiel od prvkov zoznamu nie je možné pristupovať priamo indexom.
  • Viaceré varianty: Zahŕňa priorityqueue deque ArrayDeque a Implementácia LinkedList.
  • Dve sady metód: Verzie vyhodenia (Pridať Element Element) a bezpečné verzie (ponúkajte anketu Peek).

Vyhlásenie rozhrania Java Front

Rozhranie frontu je deklarované ako:

Front verejného rozhrania rozširuje zbierku



Nemôžeme inštantovať front priamo, pretože ide o rozhranie. Tu môžeme použiť triedu, ako je LinkedList alebo Priorityqueue, ktorý implementuje toto rozhranie.

Frontfront = nový LinkedList();

bourne-again shell

Teraz prejdime jednoduchým príkladom, potom sa hlboko ponoríme do článku.

Príklad: Základný front pomocou linkedList

Java
import java.util.LinkedList; import java.util.Queue; public class Geeks {    public static void main(String args[])   {  // Create a Queue of Integers using LinkedList  Queue<Integer> q = new LinkedList<>();    System.out.println('Queue elements: ' + q);  } } 

Výstup
Queue elements: [] 

Byť rozhraním, front potrebuje na vyhlásenie betónovú triedu a najbežnejšími triedami sú Prulita a Prepojený zoznam v Java. Všimnite si, že ani jedna z týchto implementácií nie je bezpečná. PriorityBlockingqueue je jednou z alternatívnej implementácie, ak je potrebná implementácia bezpečia na vlákno.

dĺžka reťazca java

Vytváranie objektov frontu

Front je rozhranie, takže objekty nie je možné vytvoriť z frontu typu. Vždy potrebujeme triedu, ktorá rozširuje tento zoznam, aby sme vytvorili objekt. A tiež po zavedení Generické výrobky V Java 1.5 je možné obmedziť typ objektu, ktorý je možné uložiť do frontu. Tento front-bezpečnostný front možno definovať ako:

Java
// Obj is the type of the object to be stored in Queue Queue<Obj> queue = new PriorityQueue<Obj> (); 

Bežné metódy

Rozhranie frontu poskytuje niekoľko metód na pridanie odstránenia a kontroly prvkov vo fronte. Tu sú niektoré z najbežnejšie používaných metód:

  • Pridať (prvok) : Pridá prvok do zadnej časti frontu. Ak je front plný, vyvolá výnimku.
  • ponuka (prvok): Pridá prvok do zadnej časti frontu. Ak je front plný, vráti sa nepravdivé.
  • odstrániť () : Odstráni a vráti prvok v prednej časti frontu. Ak je front prázdny, vyvolá výnimku.
  • anketa (): Odstráni a vráti prvok v prednej časti frontu. Ak je front prázdny, vráti sa null.
  • element (): Vráti prvok v prednej časti frontu bez toho, aby ste ho odstránili. Ak je front prázdny, vyvolá výnimku.
  • peek () : Vráti prvok v prednej časti frontu bez toho, aby ste ho odstránili. Ak je front prázdny, vráti sa null.

Príklad 1: Tento príklad demonštruje operácie frontových frontov.

Java
import java.util.LinkedList; import java.util.Queue; public class Geeks {  public static void main(String[] args) {  Queue<String> queue = new LinkedList<>();  // add elements to the queue  queue.add('apple');  queue.add('banana');  queue.add('cherry');  System.out.println('Queue: ' + queue);  // remove the element at the front of the queue  String front = queue.remove();  System.out.println('Removed element: ' + front);  // print the updated queue  System.out.println('Queue after removal: ' + queue);  // add another element to the queue  queue.add('date');  // peek at the element at the front of the queue  String peeked = queue.peek();  System.out.println('Peeked element: ' + peeked);  // print the updated queue  System.out.println('Queue after peek: ' + queue);  } } 

Výstup
Queue: [apple banana cherry] Removed element: apple Queue after removal: [banana cherry] Peeked element: banana Queue after peek: [banana cherry date] 

Príklad 2 :

Java
import java.util.LinkedList; import java.util.Queue; public class Geeks {  public static void main(String[] args){  Queue<Integer> q = new LinkedList<>();  // Adds elements {0 1 2 3 4} to the queue  for (int i = 0; i < 5; i++)  q.add(i);  // Display contents of the queue  System.out.println('Elements of queue: ' + q);  // To remove the head of queue  int removedele = q.remove();    System.out.println('Removed element:'+ removedele);  System.out.println(q);  // To view the head of queue  int head = q.peek();  System.out.println('Head of queue:'+ head);  // Rest all methods of collection interface like size and contains can be used with this implementation.  int size = q.size();  System.out.println('Size of queue:' + size);  } } 

Výstup
Elements of queue: [0 1 2 3 4] Removed element:0 [1 2 3 4] Head of queue:1 Size of queue:4 

Triedy, ktoré implementujú rozhranie frontu

1. Priorityqueue

Trieda priorityqueue nám umožňuje spracovať prvky na základe ich priority namiesto obvyklého poradia FIFO normálneho frontu. Je to užitočné, keď sa musia riešiť prvky v prioritnom poradí. Tu je návod, ako môžeme vytvoriť front pomocou tejto triedy.

Príklad:

vikas divyakirti
Java
import java.util.*; class Geeks {  public static void main(String args[]){  // Creating empty priority queue  Queue<Integer> pq = new PriorityQueue<Integer>();  // Adding items to the pQueue using add()  pq.add(10);  pq.add(20);  pq.add(15);  // Printing the top element of the PriorityQueue  System.out.println(pq.peek());  // Printing the top element and removing it the PriorityQueue container  System.out.println(pq.poll());  // Printing the top element again  System.out.println(pq.peek());  } } 

Výstup
10 10 15 

2. LinkedList

LinkedList je lineárna dátová štruktúra, kde sa prvky ukladajú ako samostatné objekty, z ktorých každý obsahuje údaje a odkaz na ďalší prvok. Prvky sú pripojené pomocou ukazovateľov, ktoré nie sú uložené v kontinuálnej pamäti. Tu je návod, ako môžeme vytvoriť front pomocou tejto triedy.

Príklad:

Java
import java.util.*; class Geeks {  public static void main(String args[])  {  // Creating empty LinkedList  Queue<Integer> ll = new LinkedList<Integer>();  // Adding items to the ll using add()  ll.add(10);  ll.add(20);  ll.add(15);  // Printing the top element of the LinkedList  System.out.println(ll.peek());  // Printing the top element and removing it from the LinkedList container  System.out.println(ll.poll());  // Printing the top element again  System.out.println(ll.peek());  } } 

Výstup
10 10 20 

3. PriorityBlockingqueue

PriorityBlockingQueue je bezpečný blok blokujúci front, ktorý objednáva prvky, ako je priorityqueue a podporuje blokovanie získavania. Pretože je neobmedzené, pridávanie prvkov môže stále zlyhať, ak sa vyčerpá pamäť. Tu je návod, ako vytvoriť frontu pomocou tejto triedy.

Príklad:

Java
import java.util.concurrent.PriorityBlockingQueue; import java.util.*; class Geeks {  public static void main(String args[])  {  // Creating empty priority blocking queue  Queue<Integer> pbq = new PriorityBlockingQueue<Integer>();  // Adding items to the pbq using add()  pbq.add(10);  pbq.add(20);  pbq.add(15);  // Printing the top element of the PriorityBlockingQueue  System.out.println(pbq.peek());  // Printing the top element and removing it from the PriorityBlockingQueue  System.out.println(pbq.poll());  // Printing the top element again  System.out.println(pbq.peek());  } } 

Výstup
10 10 15 

Rôzne operácie na rozhraní frontu pomocou triedy priorityqueue

1. Pridanie prvkov

Na pridanie prvku do frontu môžeme použiť metóda pridať () . Príkaz na vloženie sa v prioritnomqueue nezachová. Prvky sa ukladajú na základe prioritného poradia, ktoré predvolene stúpajú. 

Príklad:

java hasnext
Java
import java.util.*; public class Geeks {  public static void main(String args[])  {  Queue<String> pq = new PriorityQueue<>();  pq.add('Geeks');  pq.add('For');  pq.add('Geeks');  System.out.println(pq);  } } 

Výstup
[For Geeks Geeks] 

2. Odstraňovanie prvkov

Na odstránenie prvku z frontu môžeme použiť odstrániť () metóda. Ak existuje viac objektov, potom sa odstráni prvý výskyt objektu. Ten Metóda anl () sa tiež používa na odstránenie hlavy a jej vrátenie. 

Príklad:

Java
import java.util.*; public class Geeks {  public static void main(String args[])  {  Queue<String> pq = new PriorityQueue<>();  pq.add('Geeks');  pq.add('For');  pq.add('Geeks');  System.out.println('Initial Queue: ' + pq);  pq.remove('Geeks');  System.out.println('After Remove: ' + pq);  System.out.println('Poll Method: ' + pq.poll());  System.out.println('Final Queue: ' + pq);  } } 

Výstup
Initial Queue: [For Geeks Geeks] After Remove: [For Geeks] Poll Method: For Final Queue: [Geeks] 

3. Iterácia frontu

Existuje niekoľko spôsobov, ako iterovať cez front. Najslávnejším spôsobom je premena frontu na pole a prechádzanie pomocou na slučku . Front má tiež zabudovaný iterátor, ktorý sa dá použiť na iteráciu frontom. 

reakčná mapa

Príklad:

Java
import java.util.*; public class Geeks {  public static void main(String args[])  {  Queue<String> pq = new PriorityQueue<>();  pq.add('Geeks');  pq.add('For');  pq.add('Geeks');  Iterator iterator = pq.iterator();  while (iterator.hasNext()) {  System.out.print(iterator.next() + ' ');  }  } } 

Výstup
For Geeks Geeks 

Metódy rozhrania frontu

Tu je celý zoznam metód pre frontRozhranie v Jave spolu so všetkými metódami zdedí zo zbierkyA itrable.

Metóda

Opis

Boolean Add (e e)Vložky prvok; vyvolá výnimku, ak je plná.
Booleovská ponuka (e e)Vložky prvok; Vráti sa nepravdivé, ak sú plné.
E odstraňte ()Odstraňuje hlavu; vyvolá výnimku, ak je prázdna.
E anketa ()Odstraňuje hlavu; Vráti null, ak je prázdny.
A element ()Získava hlavu; vyvolá výnimku, ak je prázdna.
E peek ()Získava hlavu; Vráti null, ak je prázdny.
Boolean Addall (zbierkac)Pridáva všetky prvky z inej zbierky.
void clear ()Odstraňuje všetky prvky.
Boolean obsahuje (objekt o)Kontroluje, či existuje prvok.
boolean obsahuje (zbierkac)Kontroluje, či existujú všetky prvky.
Boolean Equals (Objekt O)V porovnaní s inou zbierkou.
int hashcode ()Vráti kód hash.
boolean isempty ()Kontroluje, či je zbierka prázdna.
Iterátoriterátor ()Vracia iterátora pre prvky.
boolean odstráňte (objekt o)Odstráni konkrétny prvok.
Boolean RemonteAll (zbierkac)Odstraňuje všetky zodpovedajúce prvky.
Boolean Držbal (zbierkac)Udržiava iba špecifikované prvky.
int size ()Vráti počet prvkov.
Object [] toarray ()Vráti prvky ako pole.
T [] toarray (t [] a)Vráti prvky ako zadané pole.
predvolené void fleach (spotrebiteľakcia)Vykonáva akciu pre každý prvok.
predvolené void fleach (spotrebiteľakcia)Vykonáva akciu pre každý prvok.
predvolený spojovací prostriedoksplirátor ()Vráti špilátor.
predvolený tokstream ()Vráti sekvenčný prúd.
predvolený tokparalelstream ()Vráti paralelný tok.