Introducción
En este laboratorio, aprenderás cómo verificar si una Queue en Java está vacía. Esta es una habilidad crucial para prevenir errores cuando se trabaja con colas.
Exploraremos el método principal para esta comprobación, isEmpty(), y también veremos cómo verificar el estado de la cola utilizando el método size(). Además, cubriremos cómo manejar escenarios en los que la cola podría ser nula. A través de ejemplos prácticos, adquirirás experiencia práctica en determinar la vacuidad de una cola en Java.
Utiliza isEmpty() para comprobar la cola
En este paso, exploraremos cómo verificar si una Queue en Java está vacía utilizando el método isEmpty(). Esta es una operación fundamental cuando se trabaja con colecciones, ya que nos permite evitar errores que podrían ocurrir al intentar acceder a elementos de una cola vacía.
Primero, creemos un sencillo programa en Java que demuestre el uso de isEmpty().
Abre el WebIDE y navega hasta el directorio
~/projecten el Explorador de archivos de la izquierda.Haz clic derecho en el espacio vacío del Explorador de archivos, selecciona "Nuevo archivo" y asígnalo el nombre
QueueCheck.java.Abre el archivo
QueueCheck.javaen el editor.Copia y pega el siguiente código en el editor:
import java.util.LinkedList; import java.util.Queue; public class QueueCheck { public static void main(String[] args) { // Create a Queue using LinkedList Queue<String> myQueue = new LinkedList<>(); // Check if the queue is empty boolean isEmptyBeforeAdd = myQueue.isEmpty(); System.out.println("Is the queue empty before adding elements? " + isEmptyBeforeAdd); // Add some elements to the queue myQueue.add("Element 1"); myQueue.add("Element 2"); // Check if the queue is empty again boolean isEmptyAfterAdd = myQueue.isEmpty(); System.out.println("Is the queue empty after adding elements? " + isEmptyAfterAdd); } }Repasemos rápidamente las nuevas partes de este código:
import java.util.LinkedList;yimport java.util.Queue;: Estas líneas importan las clases necesarias para trabajar con colas. Estamos utilizandoLinkedListcomo una implementación concreta de la interfazQueue.Queue<String> myQueue = new LinkedList<>();: Esta línea crea un nuevo objetoQueuellamadomyQueueque puede contener elementos de tipoString.myQueue.isEmpty(): Este es el método en el que nos estamos centrando. Devuelvetruesi la cola no contiene elementos yfalseen caso contrario.myQueue.add("Element 1");: Esto agrega un elemento al final de la cola.
Guarda el archivo
QueueCheck.java(Ctrl+S o Cmd+S).Abre la Terminal en la parte inferior del WebIDE. Asegúrate de estar en el directorio
~/project. Si no lo estás, escribecd ~/projecty presiona Enter.Compila el programa Java escribiendo el siguiente comando y presionando Enter:
javac QueueCheck.javaSi la compilación es exitosa, no verás ninguna salida. Se creará un archivo
QueueCheck.classen el directorio~/project.Ejecuta el programa Java compilado escribiendo el siguiente comando y presionando Enter:
java QueueCheckDeberías ver una salida similar a esta:
Is the queue empty before adding elements? true Is the queue empty after adding elements? false
Esta salida confirma que el método isEmpty() informó correctamente el estado de la cola antes y después de agregar elementos. Utilizar isEmpty() es la forma recomendada de verificar si una colección está vacía, ya que generalmente es más eficiente que verificar si el tamaño es cero, especialmente para ciertas implementaciones de colecciones.
Verificar con el método size()
En el paso anterior, aprendimos cómo usar el método isEmpty() para verificar si una cola está vacía. Otra forma de determinar si una colección está vacía es comprobando su tamaño. El método size() devuelve el número de elementos en la colección. Si el tamaño es 0, la colección está vacía.
Si bien isEmpty() generalmente se prefiere para comprobar la vacuidad debido a posibles beneficios de rendimiento con ciertos tipos de colecciones, también es importante entender cómo usar size().
Modifiquemos nuestro programa QueueCheck.java para que también use el método size().
Abre el archivo
QueueCheck.javaen el editor del WebIDE.Modifica el método
mainpara incluir comprobaciones utilizando el métodosize(). Reemplaza el métodomainexistente con el siguiente código:import java.util.LinkedList; import java.util.Queue; public class QueueCheck { public static void main(String[] args) { // Create a Queue using LinkedList Queue<String> myQueue = new LinkedList<>(); // Check if the queue is empty using isEmpty() boolean isEmptyBeforeAdd = myQueue.isEmpty(); System.out.println("Is the queue empty before adding elements (isEmpty())? " + isEmptyBeforeAdd); // Check if the queue is empty using size() boolean isEmptyBySizeBeforeAdd = (myQueue.size() == 0); System.out.println("Is the queue empty before adding elements (size() == 0)? " + isEmptyBySizeBeforeAdd); // Add some elements to the queue myQueue.add("Element 1"); myQueue.add("Element 2"); // Check if the queue is empty again using isEmpty() boolean isEmptyAfterAdd = myQueue.isEmpty(); System.out.println("Is the queue empty after adding elements (isEmpty())? " + isEmptyAfterAdd); // Check if the queue is empty again using size() boolean isEmptyBySizeAfterAdd = (myQueue.size() == 0); System.out.println("Is the queue empty after adding elements (size() == 0)? " + isEmptyBySizeAfterAdd); // Print the size of the queue System.out.println("Current queue size: " + myQueue.size()); } }En este código actualizado, hemos agregado líneas para comprobar si el
size()de la cola es igual a 0 tanto antes como después de agregar elementos. También imprimimos el tamaño final de la cola.Guarda el archivo
QueueCheck.javamodificado.Abre la Terminal y asegúrate de estar en el directorio
~/project.Compila el programa Java actualizado:
javac QueueCheck.javaEjecuta el programa compilado:
java QueueCheckAhora deberías ver una salida similar a esta:
Is the queue empty before adding elements (isEmpty())? true Is the queue empty before adding elements (size() == 0)? true Is the queue empty after adding elements (isEmpty())? false Is the queue empty after adding elements (size() == 0)? false Current queue size: 2
Como puedes ver, tanto isEmpty() como comprobar si size() == 0 dan el mismo resultado para determinar si la cola está vacía. El método size() también es útil para saber exactamente cuántos elementos hay actualmente en la cola.
Manejar colas nulas
En los pasos anteriores, trabajamos con un objeto Queue que estaba correctamente inicializado. Sin embargo, en la programación del mundo real, es posible encontrar situaciones en las que una referencia a una Queue (o a cualquier objeto) es null. Intentar llamar a un método en un objeto null resultará en una NullPointerException, que es un error de tiempo de ejecución común en Java.
Es crucial manejar las posibles referencias null para prevenir estos errores. Antes de llamar a métodos como isEmpty() o size() en una Queue, siempre debes comprobar si la propia referencia a la cola es null.
Modifiquemos nuestro programa QueueCheck.java una vez más para demostrar cómo manejar una cola null.
Abre el archivo
QueueCheck.javaen el editor del WebIDE.Modifica el método
mainpara incluir una comprobación de una colanull. Reemplaza el métodomainexistente con el siguiente código:import java.util.LinkedList; import java.util.Queue; public class QueueCheck { public static void main(String[] args) { // Create a Queue using LinkedList Queue<String> myQueue = new LinkedList<>(); // Check if the queue is null before checking emptiness or size if (myQueue != null) { // Check if the queue is empty using isEmpty() boolean isEmptyBeforeAdd = myQueue.isEmpty(); System.out.println("Is the queue empty before adding elements (isEmpty())? " + isEmptyBeforeAdd); // Check if the queue is empty using size() boolean isEmptyBySizeBeforeAdd = (myQueue.size() == 0); System.out.println("Is the queue empty before adding elements (size() == 0)? " + isEmptyBySizeBeforeAdd); // Add some elements to the queue myQueue.add("Element 1"); myQueue.add("Element 2"); // Check if the queue is empty again using isEmpty() boolean isEmptyAfterAdd = myQueue.isEmpty(); System.out.println("Is the queue empty after adding elements (isEmpty())? " + isEmptyAfterAdd); // Check if the queue is empty again using size() boolean isEmptyBySizeAfterAdd = (myQueue.size() == 0); System.out.println("Is the queue empty after adding elements (size() == 0)? " + isEmptyBySizeAfterAdd); // Print the size of the queue System.out.println("Current queue size: " + myQueue.size()); } else { System.out.println("The queue is null. Cannot perform operations."); } // Example with a null queue reference Queue<String> nullQueue = null; // Attempting to check isEmpty() or size() on nullQueue without a null check would cause a NullPointerException System.out.println("\nChecking a potentially null queue:"); if (nullQueue != null) { boolean isNullQueueEmpty = nullQueue.isEmpty(); System.out.println("Is the null queue empty? " + isNullQueueEmpty); } else { System.out.println("The null queue is indeed null. Handled correctly."); } } }Hemos envuelto el código original que opera sobre
myQueuedentro de un bloqueif (myQueue != null). Esto asegura que solo llamamos a métodos enmyQueuesi no esnull. También agregamos una sección para demostrar la comprobación de una variable explícitamente establecida ennull.Guarda el archivo
QueueCheck.javamodificado.Abre la Terminal y asegúrate de estar en el directorio
~/project.Compila el programa Java actualizado:
javac QueueCheck.javaEjecuta el programa compilado:
java QueueCheckDeberías ver una salida similar a esta:
Is the queue empty before adding elements (isEmpty())? true Is the queue empty before adding elements (size() == 0)? true Is the queue empty after adding elements (isEmpty())? false Is the queue empty after adding elements (size() == 0)? false Current queue size: 2 Checking a potentially null queue: The null queue is indeed null. Handled correctly.
Esta salida muestra que nuestro código maneja correctamente tanto el caso en el que la cola está inicializada como el caso en el que la referencia a la cola es null, evitando una NullPointerException. Siempre recuerda comprobar si hay null cuando trabajes con referencias a objetos en Java, especialmente cuando pueden provenir de fuentes externas o ser el resultado de operaciones que podrían devolver null.
Resumen
En este laboratorio, aprendimos cómo verificar si una Queue en Java está vacía. Nos centramos principalmente en el uso del método isEmpty(), que es la forma estándar y recomendada de realizar esta comprobación. Creamos un sencillo programa en Java para demostrar cómo isEmpty() devuelve true para una cola vacía y false después de agregar elementos.
Además, exploramos el método size() como una forma alternativa de comprobar la vacuidad, señalando que un tamaño de 0 indica una cola vacía. Finalmente, discutimos la importancia de manejar posibles NullPointerException comprobando si un objeto de cola es nulo antes de intentar llamar a métodos en él.



