CodeGym /Blog Java /Aleatoriu /Metoda Queue poll() în Java cu exemple
John Squirrels
Nivel
San Francisco

Metoda Queue poll() în Java cu exemple

Publicat în grup

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 .Metoda Queue poll() în Java cu exemple - 2
Fig 1.0: O coadă simplă în Java

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 Queue poll() în Java cu exemple - 3
Fig 1.1: După utilizarea metodei poll() pe o 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
Deci, se pare că remove() și poll() sunt exact aceleași. Ele funcționează identic în circumstanțe normale. Dar când coada este goală, remove() aruncă NoSuchElementException , în timp ce sondajul returnează null .

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() .

Concluzie

Până la sfârșit, sperăm că sunteți familiarizat cu utilizarea și funcționarea metodei poll() a Cozilor. Cu toate acestea, în cazul oricărei confuzii, puteți oricând să reveniți aici pentru a vă consulta. Codare fericită!
Comentarii
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION