¿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 .
¿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 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
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() .
GO TO FULL VERSION