Ce este o coadă?
Așa cum sugerează și numele, Queue este o structură de date comună în Java, urmând ordinea de inserare First In First Out (FIFO) . Vă puteți imagina cu ușurință ca pe o coadă la un magazin alimentar. Cu cât intri mai devreme, cu atât pleci mai repede. Înseamnă că elementul adăugat la coadă mai devreme va pleca și el mai devreme. Primul element (fața) al cozii se mai numește și cap .Care este metoda poll() a Queue?
Metoda poll() vă permite să preluați și să eliminați elementul cel mai de sus (capul) al unei cozi. În exemplul nostru, când apelați poll() la coada de mai sus, veți primi „1” ca rezultat. Și vor rămâne doar 4 elemente în coadă.metoda poll() în Java
Exemplul 1
Aruncați o privire la un exemplu simplu de apelare a funcției poll() în coada prezentată în 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");
}
}
Ieșire
Coadă: [1, 2, 3, 4, 5, 6] sondaj() returnat: 1 coadă actualizată! [2, 3, 4, 5, 6] sondaj() returnat: 2 Coada actualizată! [3, 4, 5, 6] sondaj() returnat: 3 Coada actualizată! [4, 5, 6]
Vă rugăm să rețineți că, după fiecare poll() dimensiunea apelului din coadă este redusă cu 1 și head este returnat.
Exemplul 2
Să ne uităm la un alt exemplu de zile dintr-o săptămână. Vom apela poll() unul câte unul în zilele lucrătoare și vom vedea cum arată.
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");
}
}
Ieșire
Zile săptămânii: [duminică, luni, marți, miercuri, joi, vineri, sâmbătă] sondaj() returnat: zilele de duminică actualizate! [Luni, Marți, Miercuri, Joi, Vineri, Sâmbătă] sondaj() returnat: Zilele de Luni Actualizate! [Marți, miercuri, joi, vineri, sâmbătă] sondaj() returnat: zilele de marți actualizate! [Miercuri, Joi, Vineri, Sâmbătă]
Cum este diferit poll() de peek() și remove()?
Este foarte ușor pentru începători să amestece cele trei concepte diferite, deoarece arată destul de asemănător. Să fie „q” o coadă, apoi iată cum sunt diferite:- q.poll() : elimină și preia capul cozii
- q.peek() : nu elimină, ci doar preia/întoarce capul cozii
- q.remove() : elimină și preia capul cozii
Exemplul 3
Acum să aruncăm o privire rapidă la câteva exemple ale celor trei funcții de mai sus.
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());
}
}
Ieșire
Zile săptămânii: [duminică, luni, marți, miercuri, joi, vineri, sâmbătă] peek() returnat: duminică Zile săptămânii: [duminică, luni, marți, miercuri, joi, vineri, sâmbătă] peek() returnat: duminică zile săptămâni : [duminică, luni, marți, miercuri, joi, vineri, sâmbătă] remove() returned: Sunday Days Updated! [Luni, Marți, Miercuri, Joi, Vineri, Sâmbătă] remove() returned: Luni Zile Actualizate! [Marți, miercuri, joi, vineri, sâmbătă] remove() returned: Tuesday remove() returned: Wednesday remove() returned: Joi remove() returned: Zilele de vineri Actualizat! [Sâmbătă] sondaj() returnat: Zilele de sâmbătă actualizate! [] poll() a returnat: null Excepție în firul „principal” java.util.NoSuchElementException la java.util.LinkedList.removeFirst(LinkedList.java:270) la java.util.LinkedList.remove(LinkedList.java:
După cum puteți vedea după apelarea peek(), zilele lucrătoare rămân aceleași. Și pe măsură ce folosim remove() sau poll(), dimensiunea cozii este redusă cu 1 împreună cu returnarea capului. Mai mult, java.util.NoSuchElementException este aruncată atunci când apelăm remove() la o coadă goală, în timp ce nu este aruncată o astfel de excepție pentru utilizarea poll() .
GO TO FULL VERSION