CodeGym /Blog Java /Random-ES /Método Queue poll() en Java con ejemplos
Autor
Artem Divertitto
Senior Android Developer at United Tech

Método Queue poll() en Java con ejemplos

Publicado en el grupo Random-ES

¿Qué es una cola?

Tal como su nombre lo indica, Queue es una estructura de datos común en Java que sigue el orden de inserción First In First Out (FIFO) . Puedes imaginarlo fácilmente como una cola en una tienda de comestibles. Cuanto antes entres, antes te irás. Significa que el elemento agregado a la cola antes también se irá antes. El primer elemento (frente) de la cola también se llama cabeza .Método Queue poll() en Java con ejemplos - 2
Fig 1.0: Una cola simple en Java

¿Qué es el método poll() de Queue?

El método poll() le permite recuperar y eliminar el elemento superior (cabeza) de una cola. En nuestro ejemplo, cuando llame a poll() en la cola anterior, recibirá '1' como resultado. Y solo quedarán 4 elementos en la cola.Método Queue poll() en Java con ejemplos - 3
Fig 1.1: Después de usar el método poll() en una cola

método poll() en Java

Ejemplo 1

Eche un vistazo a un ejemplo simple de llamar a la función poll() en la cola que se muestra en la 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");        
	}
}
Producción
Cola: [1, 2, 3, 4, 5, 6] sondeo () devuelto: 1 Cola actualizada! [2, 3, 4, 5, 6] sondeo() devuelto: 2 ¡Cola actualizada! [3, 4, 5, 6] encuesta () devuelta: 3 ¡Cola actualizada! [4, 5, 6]
Tenga en cuenta que, después de cada llamada de encuesta (), el tamaño de la cola se reduce en 1 y se devuelve la cabeza.

Ejemplo 2

Veamos otro ejemplo de días en una semana. Llamaremos a poll() uno por uno los días de semana y veremos cómo se ve.

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");                   
	}
}
Producción
Días de la semana: [domingo, lunes, martes, miércoles, jueves, viernes, sábado] encuesta() devuelta: domingo ¡Días actualizados! [Lunes martes Miércoles Jueves Viernes Sábado] encuesta() devuelta: lunes ¡Días actualizados! [Martes Miércoles Jueves Viernes Sábado] encuesta() devuelta: martes ¡Días actualizados! [Miércoles, jueves, viernes, sábado]

¿En qué se diferencia poll() de peek() y remove()?

Es muy fácil para los principiantes mezclar los tres conceptos diferentes ya que se ven bastante similares. Seamos "q" una cola, así es como son diferentes:
  • q.poll() : elimina y recupera el encabezado de la cola
  • q.peek() : no elimina sino que solo recupera/devuelve el encabezado de la cola
  • q.remove() : elimina y recupera el encabezado de la cola
Entonces parece que remove() y poll() son exactamente iguales. Funcionan de forma idéntica en circunstancias normales. Pero cuando la cola está vacía, remove() arroja NoSuchElementException , mientras que poll devuelve nulo .

Ejemplo 3

Ahora echemos un vistazo rápido a algunos ejemplos de las tres funciones anteriores.

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

	}
}
Producción
Días de la semana: [domingo, lunes, martes, miércoles, jueves, viernes, sábado] peek() devuelto: domingo Días de la semana: [domingo, lunes, martes, miércoles, jueves, viernes, sábado] peek() devuelto: domingo Días de la semana: [domingo, lunes, martes, miércoles, jueves, viernes, sábado] remove() devuelto: domingo ¡Días actualizados! [Lunes martes Miércoles Jueves Viernes Sábado] remove() devuelto: lunes ¡Días actualizados! [Martes Miércoles Jueves Viernes Sábado] remove() devuelto: martes remove() devuelto: miércoles remove() devuelto: jueves remove() devuelto: viernes ¡Días actualizados! [Sábado] encuesta() devuelta: sábado ¡Días actualizados! [] encuesta() devolvió: nulo Excepción en el hilo "principal" java.util.NoSuchElementException en java.util.LinkedList.removeFirst(LinkedList.java:270) en java.util.LinkedList.remove(LinkedList.java:685) en QueuePollMethod.main(QueuePollMethod.java:48)
Como puede ver después de llamar a peek(), los días de semana siguen siendo los mismos. Y a medida que usamos remove() o poll(), el tamaño de la cola se reduce en 1 junto con la devolución de la cabeza. Además, se lanza java.util.NoSuchElementException cuando llamamos a remove() en una cola vacía, mientras que no se lanza tal excepción para usar poll() .

Conclusión

Al final, esperamos que esté familiarizado con el uso y funcionamiento del método poll() de Queues. Sin embargo, en caso de cualquier confusión, siempre puede volver aquí para consultar. ¡Feliz codificación!
Comentarios
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION