L'interfaccia Queue è disponibile nel pacchetto java.util ed estende l'interfaccia Collection. Viene utilizzato per conservare gli elementi che vengono elaborati secondo la modalità FIFO (First In First Out). È un elenco ordinato di oggetti, in cui l'inserimento degli elementi avviene alla fine dell'elenco e la rimozione degli elementi all'inizio dell'elenco.
Essendo un'interfaccia, la coda richiede, per la dichiarazione, una classe concreta, e le classi più comuni sono LinkedList e PriorityQueue in Java. Le implementazioni eseguite da queste classi non sono thread-safe. Se è necessaria un'implementazione thread-safe, PriorityBlockingQueue è un'opzione disponibile.
Dichiarazione dell'interfaccia della coda
public interface Queue extends Collection
Metodi dell'interfaccia della coda Java
Metodo | Descrizione |
---|---|
aggiunta booleana(oggetto) | Viene utilizzato per inserire l'elemento specificato in questa coda e restituire true in caso di successo. |
offerta booleana(oggetto) | Viene utilizzato per inserire l'elemento specificato in questa coda. |
Rimuovi oggetto() | Viene utilizzato per recuperare e rimuovere l'inizio di questa coda. |
Sondaggio oggetto() | Viene utilizzato per recuperare e rimuovere l'inizio di questa coda o restituisce null se questa coda è vuota. |
Elemento oggetto() | Viene utilizzato per recuperare, ma non rimuovere, l'inizio di questa coda. |
Sbirciatina dell'oggetto() | Viene utilizzato per recuperare, ma non rimuovere, l'inizio di questa coda o restituisce null se questa coda è vuota. |
Caratteristiche di una coda
Di seguito sono riportate alcune caratteristiche importanti di una coda.
- Come discusso in precedenza, il concetto FIFO viene utilizzato per l'inserimento e la cancellazione di elementi da una coda.
- La coda Java fornisce supporto per tutti i metodi dell'interfaccia Collection, inclusi eliminazione, inserimento, ecc.
- PriorityQueue, ArrayBlockingQueue e LinkedList sono le implementazioni utilizzate più frequentemente.
- Viene sollevata la NullPointerException se viene eseguita un'operazione nulla su BlockingQueues.
- Quelle code che sono presenti nel file util pacchetto sono noti come code illimitate.
- Quelle code che sono presenti nel file utile pacchetto sono noti come code delimitate.
- Tutte le code escludendo le Deque facilitano la rimozione e l'inserimento in testa e in coda alla coda; rispettivamente. Le deques infatti supportano l'inserimento e la rimozione degli elementi su entrambe le estremità.
Classe PriorityQueue
PriorityQueue è anche una classe definita nel framework della raccolta che ci offre un modo per elaborare gli oggetti in base alla priorità. È già stato descritto che l'inserimento e l'eliminazione degli oggetti segue lo schema FIFO nella coda Java. Tuttavia, a volte è necessario elaborare gli elementi della coda in base alla priorità, ed è qui che entra in azione PriorityQueue.
Dichiarazione della classe PriorityQueue
Vediamo la dichiarazione per la classe java.util.PriorityQueue.
public class PriorityQueue extends AbstractQueue implements Serializable
Esempio di coda di priorità Java
Nome del file: TestCollection12.java
import java.util.*; class TestCollection12{ public static void main(String args[]){ PriorityQueue queue=new PriorityQueue(); queue.add('Amit'); queue.add('Vijay'); queue.add('Karan'); queue.add('Jai'); queue.add('Rahul'); System.out.println('head:'+queue.element()); System.out.println('head:'+queue.peek()); System.out.println('iterating the queue elements:'); Iterator itr=queue.iterator(); while(itr.hasNext()){ System.out.println(itr.next()); } queue.remove(); queue.poll(); System.out.println('after removing two elements:'); Iterator itr2=queue.iterator(); while(itr2.hasNext()){ System.out.println(itr2.next()); } } }Provalo adesso
Produzione:
head:Amit head:Amit iterating the queue elements: Amit Jai Karan Vijay Rahul after removing two elements: Karan Rahul Vijay
Esempio Java PriorityQueue: Libro
Vediamo un esempio di PriorityQueue in cui aggiungiamo libri alla coda e stampiamo tutti i libri. Gli elementi in PriorityQueue devono essere di tipo Comparable. Le classi String e Wrapper sono comparabili per impostazione predefinita. Per aggiungere oggetti definiti dall'utente in PriorityQueue, è necessario implementare l'interfaccia Comparable.
Nome del file: LinkedListExample.java
import java.util.*; class Book implements Comparable{ int id; String name,author,publisher; int quantity; public Book(int id, String name, String author, String publisher, int quantity) { this.id = id; this.name = name; this.author = author; this.publisher = publisher; this.quantity = quantity; } public int compareTo(Book b) { if(id>b.id){ return 1; }else if(id <b.id){ return -1; }else{ 0; } public class linkedlistexample { static void main(string[] args) queue priorityqueue(); creating books book b1="new" book(121,'let us c','yashwant kanetkar','bpb',8); b2="new" book(233,'operating system','galvin','wiley',6); b3="new" book(101,'data communications & networking','forouzan','mc graw hill',4); adding to the queue.add(b1); queue.add(b2); queue.add(b3); system.out.println('traversing elements:'); traversing elements for(book b:queue){ system.out.println(b.id+' '+b.name+' '+b.author+' '+b.publisher+' '+b.quantity); queue.remove(); system.out.println('after removing one record:'); < pre> <p> <strong>Output:</strong> </p> <pre>Traversing the queue elements: 101 Data Communications & Networking Forouzan Mc Graw Hill 4 233 Operating System Galvin Wiley 6 121 Let us C Yashwant Kanetkar BPB 8 After removing one book record: 121 Let us C Yashwant Kanetkar BPB 8 233 Operating System Galvin Wiley 6 </pre> <hr></b.id){>