Como Verificar se um Set Está Vazio em Java

JavaBeginner
Pratique Agora

Introdução

Neste laboratório, você aprenderá como verificar se um Set em Java está vazio. Exploraremos o método padrão isEmpty(), uma maneira simples e eficiente de determinar se um conjunto contém algum elemento.

Você também aprenderá como verificar o tamanho de um conjunto usando o método size() e entender como lidar com potenciais NullPointerException ao lidar com conjuntos nulos. Ao final deste laboratório, você estará proficiente em verificar a vaziedade de conjuntos Java em vários cenários.

Use isEmpty() para Verificação do Set

Nesta etapa, aprenderemos como verificar se um Set em Java está vazio usando o método isEmpty(). Um Set é uma coleção que não pode conter elementos duplicados. O método isEmpty() é uma maneira simples e eficiente de determinar se uma coleção contém algum elemento.

  1. Primeiro, vamos criar um novo arquivo Java chamado SetCheck.java no seu diretório ~/project. Você pode fazer isso clicando com o botão direito no File Explorer à esquerda e selecionando "New File", depois digitando SetCheck.java.

  2. Abra o arquivo SetCheck.java no editor e adicione o seguinte 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);
        }
    }

    Vamos detalhar as novas partes deste código:

    • import java.util.HashSet; e import java.util.Set;: Estas linhas importam as classes necessárias para trabalhar com Set e HashSet.
    • Set<String> fruits = new HashSet<>();: Esta linha cria um novo objeto HashSet chamado fruits. Especificamos <String> para indicar que este conjunto armazenará objetos String.
    • boolean isEmptyBeforeAdd = fruits.isEmpty();: Esta linha chama o método isEmpty() no conjunto fruits e armazena o resultado (seja true ou false) em uma variável booleana chamada isEmptyBeforeAdd.
    • fruits.add("Apple");: Esta linha adiciona a string "Apple" ao conjunto fruits.
    • boolean isEmptyAfterAdd = fruits.isEmpty();: Esta linha verifica se o conjunto está vazio novamente após adicionar elementos.
  3. Salve o arquivo SetCheck.java (Ctrl+S ou Cmd+S).

  4. Agora, vamos compilar o programa Java. Abra o Terminal na parte inferior do WebIDE e certifique-se de estar no diretório ~/project. Em seguida, execute o seguinte comando:

    javac SetCheck.java

    Se a compilação for bem-sucedida, você não verá nenhuma saída.

  5. Finalmente, execute o programa compilado usando o comando java:

    java SetCheck

    Você deve ver uma saída semelhante a esta:

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

    Esta saída confirma que o método isEmpty() relatou corretamente o estado do conjunto antes e depois de adicionar elementos.

Verificar o Tamanho do Set com size()

Na etapa anterior, aprendemos como verificar se um Set está vazio usando isEmpty(). Outra operação comum é descobrir quantos elementos estão em um Set. Para isso, usamos o método size(). O método size() retorna o número de elementos atualmente no conjunto.

  1. Abra o arquivo SetCheck.java no seu diretório ~/project no editor WebIDE.

  2. Modifique o método main para incluir chamadas ao método size(). Substitua o método main existente pelo seguinte 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);
        }
    }

    Aqui está o que adicionamos:

    • int sizeBeforeAdd = fruits.size();: Esta linha chama o método size() no conjunto fruits e armazena o valor inteiro retornado (o número de elementos) em uma variável chamada sizeBeforeAdd.
    • int sizeAfterAdd = fruits.size();: Isso verifica o tamanho após adicionar os três elementos iniciais.
    • fruits.add("Apple");: Tentamos adicionar "Apple" novamente. Como "Apple" já está no conjunto, esta operação não alterará o conteúdo do conjunto.
    • int sizeAfterDuplicateAdd = fruits.size();: Isso verifica o tamanho após tentar adicionar uma duplicata.
  3. Salve o arquivo SetCheck.java.

  4. Compile o programa Java modificado no Terminal:

    javac SetCheck.java

    Novamente, nenhuma saída indica compilação bem-sucedida.

  5. Execute o programa:

    java SetCheck

    Você deve ver uma saída semelhante 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 saída mostra que o método size() relata corretamente o número de elementos e que adicionar um elemento duplicado não aumenta o tamanho do conjunto.

Lidar com Sets Nulos

Nas etapas anteriores, trabalhamos com um Set que foi devidamente inicializado. No entanto, na programação do mundo real, você pode encontrar situações em que uma variável Set é null. Tentar chamar métodos como isEmpty() ou size() em um objeto null resultará em um NullPointerException, que é um erro comum em Java. É importante lidar com esses casos de forma adequada.

  1. Abra o arquivo SetCheck.java no seu diretório ~/project no editor WebIDE.

  2. Modifique o método main para demonstrar como lidar com um set null. Substitua o método main existente pelo seguinte 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.");
                }
            }
        }
    }

    Neste código atualizado:

    • Set<String> colors = null;: Declaramos uma variável Set colors, mas a definimos explicitamente como null.
    • Comentamos a linha que causaria um NullPointerException.
    • if (colors == null): Esta é a verificação crucial. Antes de chamar qualquer método na variável colors, primeiro verificamos se ela é null.
    • Se colors não for null, prosseguimos para verificar se está vazio usando colors.isEmpty() ou obter seu tamanho usando colors.size().
    • Em seguida, inicializamos colors com um novo HashSet e adicionamos elementos para mostrar a saída diferente quando o conjunto não é nulo e não está vazio.
  3. Salve o arquivo SetCheck.java.

  4. Compile o programa no Terminal:

    javac SetCheck.java
  5. Execute o programa:

    java SetCheck

    Você deve ver uma saída semelhante a esta:

    The colors set is null.
    The colors set is not empty and has 2 elements.

    Isso demonstra como lidar com segurança com possíveis valores null para uma variável Set antes de tentar acessar seus métodos. Sempre verifique se é null primeiro ao lidar com referências de objetos que podem não estar inicializadas.

Resumo

Neste laboratório, aprendemos como verificar se um Set em Java está vazio. Começamos usando o método isEmpty(), que é a maneira padrão e mais eficiente de realizar essa verificação. Criamos um HashSet, verificamos seu status vazio antes e depois de adicionar elementos e observamos a saída booleana de isEmpty(). Isso demonstrou o uso básico de isEmpty() para determinar se um conjunto contém algum elemento.