logo

Kö gränssnitt i java

Köngränssnittet är en del av java.util paketet och utökar Samlingsgränssnitt . Den lagrar och bearbetar data i en ordning där element läggs till bak och tas bort från framsidan.

Nyckelfunktioner

  • FIFO -beställning: Element behandlas i den ordning de sattes in (först-i-första-ut).
  • Ingen slumpmässig åtkomst: Till skillnad från listelement kan inte nås direkt med index.
  • Flera varianter: Inkluderar prioriteringskeede deque arraydeque och länkade implementeringar.
  • Två uppsättningar metoder: Kastutupptagningsversioner (Lägg till borttagningselement) och säkra versioner (erbjuda omröstning Peek).

Java -köngränssnitt

Köngränssnittet förklaras som:

Det offentliga gränssnittskön förlänger samlingen



Vi kan inte instansera en kö direkt eftersom det är ett gränssnitt. Här kan vi använda en klass som LinkedList eller PriorityQueue som implementerar detta gränssnitt.

kö = ny länkadlista();

c# handledning

Låt oss nu gå igenom ett enkelt exempel först då kommer vi djupt att dyka in i artikeln.

Exempel: Grundläggande kö med 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);  } } 

Produktion
Queue elements: [] 

Att vara ett gränssnitt Kön behöver en konkret klass för deklarationen och de vanligaste klasserna är Prulityqueue och Linkedlista i Java. Observera att ingen av dessa implementeringar är trådsäkra. PrioriteringsblockingQueue är en alternativ implementering om den trådsäkra implementeringen behövs.

numpy unik

Skapa köobjekt

Kön är ett gränssnitt så att objekt inte kan skapas av typkön. Vi behöver alltid en klass som utvidgar denna lista för att skapa ett objekt. Och även efter introduktionen av Generiker I Java 1.5 är det möjligt att begränsa den typ av objekt som kan lagras i kön. Denna typsäkra kö kan definieras som:

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

Gemensamma metoder

Köngränssnittet tillhandahåller flera metoder för att lägga till borttagning och inspektera element i kön. Här är några av de mest använda metoderna:

  • lägg till (element) : Lägger till ett element på baksidan av kön. Om kön är full kastar det ett undantag.
  • erbjudande (element): Lägger till ett element på baksidan av kön. Om kön är full returnerar den falskt.
  • ta bort() : Tar bort och returnerar elementet framför kön. Om kön är tom kastar det ett undantag.
  • röstning(): Tar bort och returnerar elementet framför kön. Om kön är tom returnerar den noll.
  • element(): Returnerar elementet framför kön utan att ta bort det. Om kön är tom kastar det ett undantag.
  • titt() : Returnerar elementet framför kön utan att ta bort det. Om kön är tom returnerar den noll.

Exempel 1: Detta exempel demonstrerar basiska köer.

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);  } } 

Produktion
Queue: [apple banana cherry] Removed element: apple Queue after removal: [banana cherry] Peeked element: banana Queue after peek: [banana cherry date] 

Exempel 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);  } } 

Produktion
Elements of queue: [0 1 2 3 4] Removed element:0 [1 2 3 4] Head of queue:1 Size of queue:4 

Klasser som implementerar köngränssnittet

1. Prioriteradqueue

PriorityQueue -klassen låter oss bearbeta element baserat på deras prioritering istället för den vanliga FIFO -ordningen i en normal kö. Det är användbart när element måste hanteras i prioriterad ordning. Så här kan vi skapa en kö med den här klassen.

Exempel:

urfi javed
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());  } } 

Produktion
10 10 15 

2. LinkedList

LinkedList är en linjär datastruktur där element lagras som separata objekt som var och en innehåller data och en länk till nästa element. Elementen är anslutna med pekare som inte lagras i kontinuerligt minne. Så här kan vi skapa en kö med den här klassen.

Exempel:

java läser csv
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());  } } 

Produktion
10 10 20 

3. PrioritetsblockingQueue

PriorityBlockingQueue är en trådsäker obegränsad blockeringskö som beställer element som PriorityQueue och stöder blockering av återhämtning. Eftersom det är obegränsat att lägga till element kan fortfarande misslyckas om minnet rinner ut. Så här skapar du en kö med den här klassen.

Exempel:

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());  } } 

Produktion
10 10 15 

Olika operationer på köngränssnittet med hjälp av prioriteringskviktsklass

1. Lägga till element

För att lägga till ett element i en kö kan vi använda Lägg till () -metoden . Insättningsordern bibehålls inte i prioriteringsqueue. Elementen lagras baserat på den prioriterade ordning som stiger upp som standard. 

Exempel:

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);  } } 

Produktion
[For Geeks Geeks] 

2. Ta bort element

För att ta bort ett element från en kö kan vi använda ta bort () -metoden. Om det finns flera objekt tas den första förekomsten av objektet bort. De Metod () metod används också för att ta bort huvudet och returnera det. 

multiplexering

Exempel:

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);  } } 

Produktion
Initial Queue: [For Geeks Geeks] After Remove: [For Geeks] Poll Method: For Final Queue: [Geeks] 

3. iterera kön

Det finns flera sätt att iterera genom kön. Det mest berömda sättet är att konvertera kön till matrisen och korsa med för slinga . Kön har också en inbyggd iterator som kan användas för att iterera genom kön. 

Exempel:

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() + ' ');  }  } } 

Produktion
For Geeks Geeks 

Metoder för köngränssnitt

Här är den fullständiga metodlistan för könGränssnitt i Java tillsammans med alla metoder som det ärver från samlingenoch itable.

Metod

Beskrivning

booleska tillägg (e e)Insatselement; Kasta undantag om fullt.
Booleska erbjudande (E E)Insatselement; Returnerar falskt om det är fullt.
E ta bort ()Tar bort huvudet; Kasta undantag om tomt.
E Poll ()Tar bort huvudet; Returnerar noll om den är tom.
Och element ()Hämtar huvudet; Kasta undantag om tomt.
E peek ()Hämtar huvudet; Returnerar noll om den är tom.
Boolean Addall (samlingc)Lägger till alla element från en annan samling.
void clear ()Tar bort alla element.
Boolean innehåller (objekt o)Kontroller om elementet finns.
Boolean InnehållsAll (samlingc)Kontroller om alla element finns.
booleska är lika (objekt o)Jämför med en annan samling.
int hashcode ()Returnerar hashkod.
Boolean Isempty ()Kontroller om samlingen är tom.
Iteratoriterator ()Returnerar iterator för element.
Boolean Ta bort (objekt o)Tar bort ett specifikt element.
Boolean RemoveAll (samlingc)Tar bort alla matchande element.
Boolean behåller (samlingc)Håller endast specificerade element.
int -storlek ()Returnerar antalet element.
Objekt [] toArray ()Returnerar element som en matris.
T [] toArray (t [] a)Returnerar element som en typad matris.
Standard Void Foreach (konsumenthandling)Utför åtgärder för varje element.
Standard Void Foreach (konsumenthandling)Utför åtgärder för varje element.
spliteratorSpliterator ()Returnerar en spliterator.
standardströmströmma()Returnerar en sekventiell ström.
standardströmParallElStream ()Returnerar en parallell ström.