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ö
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
Javaimport 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.
Javaimport 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 :
Javaimport 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 javedJava
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 csvJava
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:
Javaimport 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:
Javaimport 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:
Javaimport 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:
Javaimport 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ön
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 (samling extends E>c) | 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 (samling>c) | 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. |
| Iterator | Returnerar iterator för element. |
| Boolean Ta bort (objekt o) | Tar bort ett specifikt element. |
| Boolean RemoveAll (samling>c) | Tar bort alla matchande element. |
| Boolean behåller (samling>c) | Håller endast specificerade element. |
| int -storlek () | Returnerar antalet element. |
| Objekt [] toArray () | Returnerar element som en matris. |
| Returnerar element som en typad matris. | |
| Standard Void Foreach (konsument super E>handling) | Utför åtgärder för varje element. |
| Standard Void Foreach (konsument super E>handling) | Utför åtgärder för varje element. |
| spliterator | Returnerar en spliterator. |
| standardström | Returnerar en sekventiell ström. |
| standardström | Returnerar en parallell ström. |