Cómo comprobar si un Set está vacío en Java

JavaJavaBeginner
Practicar Ahora

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

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.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL java(("Java")) -.-> java/DataStructuresGroup(["Data Structures"]) java(("Java")) -.-> java/ObjectOrientedandAdvancedConceptsGroup(["Object-Oriented and Advanced Concepts"]) java(("Java")) -.-> java/SystemandDataProcessingGroup(["System and Data Processing"]) java(("Java")) -.-> java/BasicSyntaxGroup(["Basic Syntax"]) java/BasicSyntaxGroup -.-> java/if_else("If...Else") java/DataStructuresGroup -.-> java/collections_methods("Collections Methods") java/ObjectOrientedandAdvancedConceptsGroup -.-> java/hashset("HashSet") java/SystemandDataProcessingGroup -.-> java/object_methods("Object Methods") subgraph Lab Skills java/if_else -.-> lab-559975{{"Cómo comprobar si un Set está vacío en Java"}} java/collections_methods -.-> lab-559975{{"Cómo comprobar si un Set está vacío en Java"}} java/hashset -.-> lab-559975{{"Cómo comprobar si un Set está vacío en Java"}} java/object_methods -.-> lab-559975{{"Cómo comprobar si un Set está vacío en Java"}} end

Usar 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.

  1. Primero, creemos un nuevo archivo Java llamado SetCheck.java en tu directorio ~/project. Puedes hacer esto haciendo clic derecho en el Explorador de archivos de la izquierda y seleccionando "Nuevo archivo", luego escribiendo SetCheck.java.

  2. Abre el archivo SetCheck.java en 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; y import java.util.Set;: Estas líneas importan las clases necesarias para trabajar con Set y HashSet.
    • Set<String> fruits = new HashSet<>();: Esta línea crea un nuevo objeto HashSet llamado fruits. Especificamos <String> para indicar que este conjunto almacenará objetos String.
    • boolean isEmptyBeforeAdd = fruits.isEmpty();: Esta línea llama al método isEmpty() en el conjunto fruits y almacena el resultado (ya sea true o false) en una variable booleana llamada isEmptyBeforeAdd.
    • fruits.add("Apple");: Esta línea agrega la cadena "Apple" al conjunto fruits.
    • boolean isEmptyAfterAdd = fruits.isEmpty();: Esta línea comprueba si el conjunto está vacío nuevamente después de agregar elementos.
  3. Guarda el archivo SetCheck.java (Ctrl+S o Cmd+S).

  4. 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.java

    Si la compilación es exitosa, no verás ninguna salida.

  5. Finalmente, ejecuta el programa compilado utilizando el comando java:

    java SetCheck

    Deberías ver una salida similar a esta:

    Is the fruits set empty before adding elements? true
    Is the fruits set empty after adding elements? false

    Esta salida confirma que el método isEmpty() informó correctamente el estado del conjunto antes y después de agregar elementos.

Verificar 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.

  1. Abre el archivo SetCheck.java en tu directorio ~/project en el editor del WebIDE.

  2. Modifica el método main para incluir llamadas al método size(). Reemplaza el método main existente 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étodo size() en el conjunto fruits y almacena el valor entero devuelto (el número de elementos) en una variable llamada sizeBeforeAdd.
    • 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.
  3. Guarda el archivo SetCheck.java.

  4. Compila el programa Java modificado en la Terminal:

    javac SetCheck.java

    Nuevamente, la ausencia de salida indica una compilación exitosa.

  5. Ejecuta el programa:

    java SetCheck

    Deberí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: 3

    Esta 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.

  1. Abre el archivo SetCheck.java en tu directorio ~/project en el editor del WebIDE.

  2. Modifica el método main para demostrar cómo manejar un Set nulo. Reemplaza el método main existente 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 variable Set llamada colors pero la establecemos explícitamente en null.
    • 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 variable colors, primero comprobamos si es null.
    • Si colors no es null, entonces procedemos a comprobar si está vacío utilizando colors.isEmpty() o a obtener su tamaño utilizando colors.size().
    • Luego inicializamos colors con un nuevo HashSet y agregamos elementos para mostrar la salida diferente cuando el conjunto no es nulo y no está vacío.
  3. Guarda el archivo SetCheck.java.

  4. Compila el programa en la Terminal:

    javac SetCheck.java
  5. Ejecuta el programa:

    java SetCheck

    Deberí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 null de una variable Set antes de intentar acceder a sus métodos. Siempre comprueba si es null primero 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.