Introducción
En este laboratorio, aprenderás cómo comprobar si un Set en Java está vacío. Exploraremos el método estándar isEmpty(), una forma sencilla y eficiente de determinar si un conjunto contiene algún elemento.
También aprenderás cómo verificar el tamaño de un conjunto utilizando el método size() y entenderás cómo manejar el posible NullPointerException cuando se trata de conjuntos nulos. Al final de este laboratorio, serás proficiente en comprobar la vacuidad de conjuntos Java en diversos escenarios.
Utiliza isEmpty() para comprobar un Set
En este paso, aprenderemos cómo comprobar si un Set en Java está vacío utilizando el método isEmpty(). Un Set es una colección que no puede contener elementos duplicados. El método isEmpty() es una forma sencilla y eficiente de determinar si una colección contiene algún elemento.
Primero, creemos un nuevo archivo Java llamado
SetCheck.javaen tu directorio~/project. Puedes hacer esto haciendo clic derecho en el Explorador de archivos de la izquierda y seleccionando "Nuevo archivo", luego escribiendoSetCheck.java.Abre el archivo
SetCheck.javaen el editor y agrega el siguiente código:import java.util.HashSet; import java.util.Set; public class SetCheck { public static void main(String[] args) { // Create a new HashSet Set<String> fruits = new HashSet<>(); // Check if the set is empty using isEmpty() boolean isEmptyBeforeAdd = fruits.isEmpty(); System.out.println("Is the fruits set empty before adding elements? " + isEmptyBeforeAdd); // Add some elements to the set fruits.add("Apple"); fruits.add("Banana"); fruits.add("Orange"); // Check if the set is empty after adding elements boolean isEmptyAfterAdd = fruits.isEmpty(); System.out.println("Is the fruits set empty after adding elements? " + isEmptyAfterAdd); } }Analicemos las nuevas partes de este código:
import java.util.HashSet;yimport java.util.Set;: Estas líneas importan las clases necesarias para trabajar conSetyHashSet.Set<String> fruits = new HashSet<>();: Esta línea crea un nuevo objetoHashSetllamadofruits. Especificamos<String>para indicar que este conjunto almacenará objetosString.boolean isEmptyBeforeAdd = fruits.isEmpty();: Esta línea llama al métodoisEmpty()en el conjuntofruitsy almacena el resultado (ya seatrueofalse) en una variable booleana llamadaisEmptyBeforeAdd.fruits.add("Apple");: Esta línea agrega la cadena "Apple" al conjuntofruits.boolean isEmptyAfterAdd = fruits.isEmpty();: Esta línea comprueba si el conjunto está vacío nuevamente después de agregar elementos.
Guarda el archivo
SetCheck.java(Ctrl+S o Cmd+S).Ahora, compilemos el programa Java. Abre la Terminal en la parte inferior del WebIDE y asegúrate de estar en el directorio
~/project. Luego, ejecuta el siguiente comando:javac SetCheck.javaSi la compilación es exitosa, no verás ninguna salida.
Finalmente, ejecuta el programa compilado utilizando el comando
java:java SetCheckDeberías ver una salida similar a esta:
Is the fruits set empty before adding elements? true Is the fruits set empty after adding elements? falseEsta salida confirma que el método
isEmpty()informó correctamente el estado del conjunto antes y después de agregar elementos.
Verifica el tamaño de un Set con size()
En el paso anterior, aprendimos cómo comprobar si un Set está vacío utilizando isEmpty(). Otra operación común es averiguar cuántos elementos hay en un Set. Para esto, utilizamos el método size(). El método size() devuelve el número de elementos actualmente en el conjunto.
Abre el archivo
SetCheck.javaen tu directorio~/projecten el editor del WebIDE.Modifica el método
mainpara incluir llamadas al métodosize(). Reemplaza el métodomainexistente con el siguiente código:import java.util.HashSet; import java.util.Set; public class SetCheck { public static void main(String[] args) { // Create a new HashSet Set<String> fruits = new HashSet<>(); // Check the size of the set before adding elements int sizeBeforeAdd = fruits.size(); System.out.println("Size of the fruits set before adding elements: " + sizeBeforeAdd); // Add some elements to the set fruits.add("Apple"); fruits.add("Banana"); fruits.add("Orange"); // Check the size of the set after adding elements int sizeAfterAdd = fruits.size(); System.out.println("Size of the fruits set after adding elements: " + sizeAfterAdd); // Add a duplicate element (Sets do not allow duplicates) fruits.add("Apple"); // Check the size again int sizeAfterDuplicateAdd = fruits.size(); System.out.println("Size of the fruits set after adding a duplicate: " + sizeAfterDuplicateAdd); } }Esto es lo que hemos agregado:
int sizeBeforeAdd = fruits.size();: Esta línea llama al métodosize()en el conjuntofruitsy almacena el valor entero devuelto (el número de elementos) en una variable llamadasizeBeforeAdd.int sizeAfterAdd = fruits.size();: Esto comprueba el tamaño después de agregar los tres elementos iniciales.fruits.add("Apple");: Intentamos agregar "Apple" nuevamente. Dado que "Apple" ya está en el conjunto, esta operación no cambiará el contenido del conjunto.int sizeAfterDuplicateAdd = fruits.size();: Esto comprueba el tamaño después de intentar agregar un duplicado.
Guarda el archivo
SetCheck.java.Compila el programa Java modificado en la Terminal:
javac SetCheck.javaNuevamente, la ausencia de salida indica una compilación exitosa.
Ejecuta el programa:
java SetCheckDeberías ver una salida similar a esta:
Size of the fruits set before adding elements: 0 Size of the fruits set after adding elements: 3 Size of the fruits set after adding a duplicate: 3Esta salida muestra que el método
size()informa correctamente el número de elementos, y que agregar un elemento duplicado no aumenta el tamaño del conjunto.
Manejar Sets nulos
En los pasos anteriores, trabajamos con un Set que estaba correctamente inicializado. Sin embargo, en la programación del mundo real, es posible que te encuentres en situaciones en las que una variable Set sea null. Intentar llamar a métodos como isEmpty() o size() en un objeto null resultará en una NullPointerException, que es un error común en Java. Es importante manejar estos casos de manera adecuada.
Abre el archivo
SetCheck.javaen tu directorio~/projecten el editor del WebIDE.Modifica el método
mainpara demostrar cómo manejar unSetnulo. Reemplaza el métodomainexistente con el siguiente código:import java.util.HashSet; import java.util.Set; public class SetCheck { public static void main(String[] args) { // Declare a Set variable but initialize it to null Set<String> colors = null; // Attempting to call isEmpty() or size() here would cause a NullPointerException // System.out.println("Is the colors set empty? " + colors.isEmpty()); // This would crash! // To safely check if a set is null or empty, we first check for null if (colors == null) { System.out.println("The colors set is null."); } else { // If it's not null, we can safely check if it's empty if (colors.isEmpty()) { System.out.println("The colors set is empty."); } else { System.out.println("The colors set is not empty and has " + colors.size() + " elements."); } } // Now, let's initialize the set and add elements colors = new HashSet<>(); colors.add("Red"); colors.add("Blue"); // Check again after initialization and adding elements if (colors == null) { System.out.println("The colors set is null."); } else { if (colors.isEmpty()) { System.out.println("The colors set is empty."); } else { System.out.println("The colors set is not empty and has " + colors.size() + " elements."); } } } }En este código actualizado:
Set<String> colors = null;: Declaramos una variableSetllamadacolorspero la establecemos explícitamente ennull.- Comentamos la línea que causaría una
NullPointerException. if (colors == null): Esta es la comprobación crucial. Antes de llamar a cualquier método en la variablecolors, primero comprobamos si esnull.- Si
colorsno esnull, entonces procedemos a comprobar si está vacío utilizandocolors.isEmpty()o a obtener su tamaño utilizandocolors.size(). - Luego inicializamos
colorscon un nuevoHashSety agregamos elementos para mostrar la salida diferente cuando el conjunto no es nulo y no está vacío.
Guarda el archivo
SetCheck.java.Compila el programa en la Terminal:
javac SetCheck.javaEjecuta el programa:
java SetCheckDeberías ver una salida similar a esta:
The colors set is null. The colors set is not empty and has 2 elements.Esto demuestra cómo manejar de manera segura los posibles valores
nullde una variableSetantes de intentar acceder a sus métodos. Siempre comprueba si esnullprimero cuando trabajes con referencias de objetos que pueden no estar inicializadas.
Resumen
En este laboratorio, aprendimos cómo comprobar si un Set en Java está vacío. Comenzamos utilizando el método isEmpty(), que es la forma estándar y más eficiente de realizar esta comprobación. Creamos un HashSet, comprobamos su estado de vacío antes y después de agregar elementos y observamos la salida booleana de isEmpty(). Esto demostró el uso básico de isEmpty() para determinar si un conjunto contiene algún elemento.



