Cos'è una coda?
Proprio come suggerisce il nome, Queue è una struttura di dati comune in Java che segue l'ordine di inserimento First In First Out (FIFO) . Puoi facilmente immaginarlo come una coda in un negozio di alimentari. Prima entri, prima esci. Significa che anche l'elemento aggiunto alla coda in precedenza partirà prima. Il primo elemento (anteriore) della coda è anche chiamato head .Qual è il metodo poll() di Queue?
Il metodo poll() consente di recuperare e rimuovere l'elemento più in alto (testa) di una coda. Nel nostro esempio, quando chiami poll() nella coda sopra, riceverai '1' come risultato. E rimarranno solo 4 elementi in coda.metodo poll() in Java
Esempio 1
Dai un'occhiata a un semplice esempio di chiamata della funzione poll() sulla coda mostrata nella figura 1.0.
import java.util.LinkedList;
import java.util.Queue;
public class QueuePollMethod {
public static void main(String[] args) {
// create a queue of die rolls
Queue dieRoll = new LinkedList();
// Add 6 integers one by one
dieRoll.add(1);
dieRoll.add(2);
dieRoll.add(3);
dieRoll.add(4);
dieRoll.add(5);
dieRoll.add(6);
// print the original queue
System.out.println("Queue:\t" + dieRoll + "\n");
// after calling poll()
System.out.println("poll() returned : " + dieRoll.poll());
System.out.println("Queue Updated!\t" + dieRoll + "\n");
// after calling poll()
System.out.println("poll() returned : " + dieRoll.poll());
System.out.println("Queue Updated!\t" + dieRoll + "\n");
// after calling poll()
System.out.println("poll() returned : " + dieRoll.poll());
System.out.println("Queue Updated!\t" + dieRoll + "\n");
}
}
Produzione
Coda: [1, 2, 3, 4, 5, 6] poll() ha restituito: 1 Coda Aggiornata! [2, 3, 4, 5, 6] poll() ha restituito: 2 Coda aggiornata! [3, 4, 5, 6] poll() ha restituito: 3 Coda aggiornata! [4, 5, 6]
Si noti che dopo ogni chiamata poll() la dimensione della coda viene ridotta di 1 e viene restituito head.
Esempio 2
Diamo un'occhiata a un altro esempio di giorni in una settimana. Chiameremo poll() uno per uno nei giorni feriali e vedremo come appare.
import java.util.LinkedList;
import java.util.Queue;
public class QueuePollMethod {
public static void main(String[] args) {
Queue days = new LinkedList();
days.add("Sunday");
days.add("Monday");
days.add("Tuesday");
days.add("Wednesday");
days.add("Thursday");
days.add("Friday");
days.add("Saturday");
// print all the days in the week
System.out.println("Week Days: \t" + days + "\n");
// after calling poll()
System.out.println("poll() returned: " + days.poll());
System.out.println("Days Updated!\t" + days + "\n");
// after calling poll()
System.out.println("poll() returned: " + days.poll());
System.out.println("Days Updated!\t" + days + "\n");
// after calling poll()
System.out.println("poll() returned: " + days.poll());
System.out.println("Days Updated!\t" + days + "\n");
}
}
Produzione
Giorni della settimana: [domenica, lunedì, martedì, mercoledì, giovedì, venerdì, sabato] poll() restituito: giorni della domenica aggiornati! [lunedì, martedì, mercoledì, giovedì, venerdì, sabato] poll() ha restituito: lunedì giorni aggiornati! [Tuesday, Wednesday, Thursday, Friday, Saturday] poll() ha restituito: Tuesday Days Updated! [mercoledì, giovedì, venerdì, sabato]
In che modo poll() è diverso da peek() e remove()?
È molto facile per i principianti mescolare i tre diversi concetti poiché sembrano abbastanza simili. Diciamo che "q" è una coda, quindi ecco come sono diversi:- q.poll() : rimuove e recupera l'inizio della coda
- q.peek() : non rimuove ma recupera/restituisce solo l'inizio della coda
- q.remove() : rimuove e recupera l'inizio della coda
Esempio 3
Ora diamo una rapida occhiata ad alcuni esempi delle tre funzioni precedenti.
import java.util.LinkedList;
import java.util.Queue;
public class QueuePollMethod {
public static void main(String[] args) {
Queue days = new LinkedList();
days.add("Sunday");
days.add("Monday");
days.add("Tuesday");
days.add("Wednesday");
days.add("Thursday");
days.add("Friday");
days.add("Saturday");
// print all the days in the week
System.out.println("Week Days: \t" + days + "\n");
// after calling peek()
System.out.println("peek() returned: " + days.peek());
System.out.println("Week Days: \t" + days + "\n");
System.out.println("peek() returned: " + days.peek());
System.out.println("Week Days: \t" + days + "\n");
// after calling remove()
System.out.println("remove() returned: " + days.remove());
System.out.println("Days Updated!\t" + days + "\n");
System.out.println("remove() returned: " + days.remove());
System.out.println("Days Updated!\t" + days + "\n");
System.out.println("remove() returned: " + days.remove());
System.out.println("remove() returned: " + days.remove());
System.out.println("remove() returned: " + days.remove());
System.out.println("remove() returned: " + days.remove());
System.out.println("Days Updated!\t" + days + "\n");
// after calling poll()
System.out.println("poll() returned: " + days.poll());
System.out.println("Days Updated!\t" + days + "\n");
System.out.println("poll() returned: " + days.poll());
System.out.println("remove() returned: " + days.remove());
}
}
Produzione
Giorni della settimana: [domenica, lunedì, martedì, mercoledì, giovedì, venerdì, sabato] peek() restituito: giorni della settimana della domenica: [domenica, lunedì, martedì, mercoledì, giovedì, venerdì, sabato] peek() restituito: giorni della settimana della domenica : [Domenica, lunedì, martedì, mercoledì, giovedì, venerdì, sabato] remove() ha restituito: Sunday Days Updated! [lunedì, martedì, mercoledì, giovedì, venerdì, sabato] remove() ha restituito: lunedì giorni aggiornati! [Tuesday, Wednesday, Thursday, Friday, Saturday] remove() restituito: martedì remove() restituito: mercoledì remove() restituito: giovedì remove() restituito: venerdì Giorni aggiornati! [Sabato] poll() ha restituito: Saturday Days Updated! [] poll() ha restituito: null Eccezione nel thread "principale" java.util.NoSuchElementException in java.util.LinkedList.removeFirst(LinkedList.java:270) in java.util.LinkedList.remove(LinkedList.java:
Come puoi vedere dopo aver chiamato peek(), i giorni della settimana rimangono gli stessi. E mentre usiamo remove() o poll() la dimensione della coda viene ridotta di 1 insieme alla restituzione della testa. Inoltre, java.util.NoSuchElementException viene lanciata quando chiamiamo remove() su una coda vuota, mentre nessuna eccezione di questo tipo viene lanciata per l'utilizzo di poll() .
GO TO FULL VERSION