La interfície de la cua forma part de java.util paquet i amplia el Interfície de col·lecció . Emmagatzema i processa les dades en un ordre on s’afegeixen elements a la part posterior i s’eliminen de la part frontal.
Característiques clau
- Ordre FIFO: Els elements es processen en l'ordre que es van inserir (primer en primer lloc).
- Sense accés aleatori: A diferència dels elements de la llista, no es pot accedir directament per índex.
- Variants múltiples: Inclou PriorityQueue Deque Arraydeque i implementacions LinkedList.
- Dos conjunts de mètodes: Versions d'excepció de llançaments (afegiu element element) i versions segures (oferiu enquesta).
Declaració de la interfície de la cua de Java
La interfície de la cua es declara com:
La cua d'interfície pública s'estén la col·lecció
No podem iniciar una cua directament, ja que és una interfície. Aquí podem utilitzar una classe com LinkedList o PriorityQueue que implementa aquesta interfície.
Fer cua
cua = nou LinkedList (); somni de cop
Ara passem per un exemple senzill i ens endinsarem en l’article.
Exemple: cua bàsica mitjançant 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); } }
Producció
Queue elements: []
Al ser una interfície, la cua necessita una classe concreta per a la declaració i les classes més comunes són les Prulityqueue i Llista enllaçada a Java. Tingueu en compte que cap d'aquestes implementacions no és segura. PriorityBlockingQueue és una implementació alternativa si es necessita la implementació segura de fil.
matriu js
Creació d'objectes de cua
La cua és una interfície de manera que els objectes no es poden crear de la cua del tipus. Sempre necessitem una classe que estengui aquesta llista per crear un objecte. I també després de la introducció de Genèrics A Java 1.5 és possible restringir el tipus d'objecte que es pot emmagatzemar a la cua. Aquest tipus de cua segur es pot definir com:
Java// Obj is the type of the object to be stored in Queue Queue<Obj> queue = new PriorityQueue<Obj> ();
Mètodes comuns
La interfície de la cua proporciona diversos mètodes per afegir i inspeccionar elements a la cua. A continuació, es mostren alguns dels mètodes més utilitzats:
- afegir (element) : Afegeix un element a la part posterior de la cua. Si la cua està plena, llança una excepció.
- Oferta (element): Afegeix un element a la part posterior de la cua. Si la cua és completa, retorna fals.
- Traieu () : Elimina i retorna l'element a la part frontal de la cua. Si la cua està buida, llança una excepció.
- Poll (): Elimina i retorna l'element a la part frontal de la cua. Si la cua està buida, torna nul.
- element (): Retorna l'element a la part frontal de la cua sense eliminar -lo. Si la cua està buida, llança una excepció.
- Peek () : Retorna l'element a la part frontal de la cua sense eliminar -lo. Si la cua està buida, torna nul.
Exemple 1: Aquest exemple demostra les operacions de cuesbasic.
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); } }
Producció
Queue: [apple banana cherry] Removed element: apple Queue after removal: [banana cherry] Peeked element: banana Queue after peek: [banana cherry date]
Exemple 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); } }
Producció
Elements of queue: [0 1 2 3 4] Removed element:0 [1 2 3 4] Head of queue:1 Size of queue:4
Classes que implementen la interfície de la cua
1. PriorityQueue
La classe PriorityQueue ens permet processar elements en funció de la seva prioritat en lloc de l’habitual ordre FIFO d’una cua normal. És útil quan s’han de gestionar els elements en ordre de prioritat. A continuació, es mostra com podem crear una cua mitjançant aquesta classe.
Exemple:
fizzbuzz javaJava
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()); } }
Producció
10 10 15
2. Llista Linked
LinkedList és una estructura de dades lineal on s’emmagatzemen elements com a objectes separats que contenen dades i un enllaç a l’element següent. Els elements es connecten mitjançant punters no emmagatzemats a la memòria contínua. A continuació, es mostra com podem crear una cua mitjançant aquesta classe.
Exemple:
Javaimport 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()); } }
Producció
10 10 20
3. PriorityBlockingQueue
PriorityBlockingQueue és una cua de bloqueig sense límits segura que ordena elements com PriorityQueue i admet la recuperació de bloqueig. Atès que és sense límits afegir elements encara pot fallar si la memòria s’acaba. Aquí teniu com crear una cua mitjançant aquesta classe.
Exemple:
ordres sql ddlJava
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()); } }
Producció
10 10 15
Diferents operacions a la interfície de cua mitjançant la classe PriorityQueue
1. Afegir elements
Per afegir un element en una cua, podem utilitzar el Mètode Afegit () . L'ordre d'inserció no es conserva en la prioritat. Els elements s’emmagatzemen en funció de l’ordre de prioritat que s’escendeix per defecte.
Exemple:
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); } }
Producció
[For Geeks Geeks]
2. Elements elements
Per eliminar un element d'una cua, podem utilitzar el Elimina () Mètode. Si hi ha diversos objectes, s'elimina la primera aparició de l'objecte. El Mètode Poll () també s'utilitza per treure el cap i tornar -lo.
Exemple:
què és l'ordre d'exportació a LinuxJava
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); } }
Producció
Initial Queue: [For Geeks Geeks] After Remove: [For Geeks] Poll Method: For Final Queue: [Geeks]
3. Iterant la cua
Hi ha diverses maneres de iterar a través de la cua. La manera més famosa és convertir la cua a la matriu i recórrer utilitzant el per bucle . La cua també té un iterador integrat que es pot utilitzar per iterar a través de la cua.
Exemple:
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() + ' '); } } }
Producció
For Geeks Geeks
Mètodes de la interfície de cua
Aquí teniu la llista de mètodes completa per a la cua
Mètode | Descripció |
|---|---|
| Boolean Add (E E) | Insereix element; llança excepció si és completa. |
| Oferta booleana (E E) | Insereix element; Retorna fals si és complet. |
| E Eliminar () | Elimina el cap; llança excepció si està buida. |
| E Poll () | Elimina el cap; Retorna nul si està buit. |
| I element () | Recupera el cap; llança excepció si està buida. |
| E Peek () | Recupera el cap; Retorna nul si està buit. |
| Boolean Addall (col·lecció extends E>c) | Afegeix tots els elements d’una altra col·lecció. |
| void clear () | Elimina tots els elements. |
| Boolean conté (Objecte O) | Comprova si existeix element. |
| Boolean conté (col·lecció>c) | Comprova si existeixen tots els elements. |
| Boolean és igual (objecte O) | Es compara amb una altra col·lecció. |
| int hashcode () | Retorna el codi hash. |
| Boolean Isempty () | Comprova si la recollida està buida. |
| Iterador | Retorna iterador per a elements. |
| Boolean Eliminar (objecte O) | Elimina un element específic. |
| Boolean Eliminament (col·lecció>c) | Elimina tots els elements que coincideixen. |
| Boolean retenall (col·lecció>c) | Manté només elements especificats. |
| int size () | Retorna el nombre d'elements. |
| Objecte [] toarray () | Retorna elements com a matriu. |
| Retorna elements com a matriu mecanografiada. | |
| Força predeterminada de void (consumidor super E>acció) | Realitza accions per a cada element. |
| Força predeterminada de void (consumidor super E>acció) | Realitza accions per a cada element. |
| Spliterator per defecte | Retorna un dividit. |
| flux per a la falta | Retorna un flux seqüencial. |
| flux per a la falta | Retorna un flux paral·lel. |