Introdução
Neste laboratório, você aprenderá como verificar se um array Java contém elementos nulos. O tratamento de valores nulos é uma habilidade fundamental na programação Java para prevenir erros comuns como NullPointerException. Exploraremos três métodos diferentes para alcançar isso: iterando pelo array usando um loop, aproveitando o poder da Stream API e contando o número de elementos nulos presentes no array. Ao final deste laboratório, você estará equipado com técnicas práticas para identificar e gerenciar efetivamente valores nulos dentro de seus arrays Java.
Looping pelo Array para Verificação de Nulos
Nesta etapa, aprenderemos como verificar valores null em um array Java, iterando por seus elementos. O tratamento de valores null é crucial em Java para prevenir NullPointerExceptions, que são erros comuns.
Um valor null em Java significa que uma variável não se refere a nenhum objeto. Quando você tenta acessar um método ou um campo de uma variável que é null, ocorre uma NullPointerException, fazendo com que seu programa trave.
Vamos criar um programa Java simples para demonstrar como iterar por um array e verificar elementos null.
Abra o arquivo
HelloJava.javano editor WebIDE. Se você não o tiver aberto, pode encontrá-lo no File Explorer à esquerda, dentro da pastaproject.Substitua o código existente em
HelloJava.javapelo seguinte código:public class HelloJava { public static void main(String[] args) { String[] names = new String[5]; // Declare an array of Strings with size 5 names[0] = "Alice"; names[1] = "Bob"; names[2] = null; // Assign a null value names[3] = "Charlie"; names[4] = null; // Assign another null value System.out.println("Checking array for null values:"); // Loop through the array for (int i = 0; i < names.length; i++) { // Check if the current element is null if (names[i] == null) { System.out.println("Element at index " + i + " is null."); } else { System.out.println("Element at index " + i + " is: " + names[i]); } } } }Vamos analisar as novas partes deste código:
String[] names = new String[5];: Esta linha declara um array chamadonamesque pode conter 5 objetosString. Quando você cria um array de objetos como este, os elementos são automaticamente inicializados comonull.names[2] = null;enames[4] = null;: Estamos explicitamente atribuindonullaos elementos nos índices 2 e 4.for (int i = 0; i < names.length; i++): Este é um loopforpadrão que itera pelo array do primeiro elemento (índice 0) ao último elemento (names.length - 1).if (names[i] == null): Dentro do loop, esta instruçãoifverifica se o elemento no índice atualié igual anull.System.out.println("Element at index " + i + " is null.");: Se o elemento fornull, esta linha é executada.System.out.println("Element at index " + i + " is: " + names[i]);: Se o elemento não fornull, esta linha é executada, imprimindo o valor do elemento.
Salve o arquivo
HelloJava.java(Ctrl+S ou Cmd+S).Agora, compile o programa modificado. Abra o Terminal na parte inferior do WebIDE e execute o seguinte comando:
javac HelloJava.javaSe não houver erros, a compilação foi bem-sucedida.
Finalmente, execute o programa compilado:
java HelloJavaVocê deve ver uma saída semelhante a esta:
Checking array for null values: Element at index 0 is: Alice Element at index 1 is: Bob Element at index 2 is null. Element at index 3 is: Charlie Element at index 4 is null.Esta saída mostra que nosso programa identificou e relatou com sucesso os elementos
nullno array.
Nesta etapa, você aprendeu como iterar manualmente por um array Java e verificar cada elemento em busca de um valor null usando uma simples condição if. Esta é uma técnica fundamental para lidar com potenciais NullPointerExceptions.
Usar a Stream API para Detectar Nulos
Na etapa anterior, usamos um loop for tradicional para verificar valores null em um array. O Java 8 introduziu a Stream API, que fornece uma maneira mais funcional e, muitas vezes, mais concisa de processar coleções de dados, incluindo arrays. Nesta etapa, aprenderemos como usar a Stream API para detectar elementos null.
A Stream API permite que você execute operações em uma sequência de elementos de forma declarativa. Isso significa que você descreve o que deseja fazer, em vez de como fazê-lo (como com um loop for).
Vamos modificar nosso programa HelloJava.java para usar a Stream API para encontrar e imprimir os elementos null.
Abra o arquivo
HelloJava.javano editor WebIDE.Substitua o código existente pelo seguinte:
import java.util.Arrays; // Import the Arrays class import java.util.Objects; // Import the Objects class public class HelloJava { public static void main(String[] args) { String[] names = new String[5]; names[0] = "Alice"; names[1] = "Bob"; names[2] = null; names[3] = "Charlie"; names[4] = null; System.out.println("Checking array for null values using Stream API:"); // Convert the array to a Stream Arrays.stream(names) // Filter for null elements .filter(Objects::isNull) // Print each null element (or a message indicating null) .forEach(name -> System.out.println("Found a null element.")); } }Vamos detalhar as novas partes:
import java.util.Arrays;: Precisamos importar a classeArrayspara usar seu métodostream().import java.util.Objects;: Importamos a classeObjectspara usar o métodoisNull(), que é uma maneira conveniente de verificar se um objeto énull.Arrays.stream(names): Esta linha converte nosso arraynamesem umStreamde objetosString..filter(Objects::isNull): Esta é uma operação intermediária. Ela filtra o stream, mantendo apenas os elementos para os quais a condiçãoObjects.isNull(element)é verdadeira (ou seja, os elementos que sãonull).Objects::isNullé uma referência de método, uma abreviação para uma expressão lambdaname -> Objects.isNull(name)..forEach(name -> System.out.println("Found a null element."));: Esta é uma operação terminal. Ela executa uma ação para cada elemento restante no stream (que são os elementosnullapós a filtragem). Neste caso, ela imprime "Found a null element." para cadanullencontrado.
Salve o arquivo
HelloJava.java.Compile o programa no Terminal:
javac HelloJava.javaExecute o programa:
java HelloJavaVocê deve ver uma saída semelhante a esta:
Checking array for null values using Stream API: Found a null element. Found a null element.Esta saída confirma que a Stream API identificou com sucesso os dois elementos
nullno array. Usar streams pode tornar seu código mais legível e expressivo para certas operações, como filtragem e processamento de coleções.
Contar Elementos Nulos
Nas etapas anteriores, aprendemos como identificar elementos null em um array usando um loop for e a Stream API. Às vezes, em vez de apenas identificar os elementos null, você pode precisar saber exatamente quantos elementos null estão presentes em um array. Nesta etapa, aprenderemos como contar o número de elementos null usando a Stream API.
A Stream API fornece um método conveniente chamado count(), que, quando aplicado a um stream, retorna o número de elementos nesse stream. Podemos combinar isso com a operação filter() que usamos antes para contar apenas os elementos null.
Vamos modificar nosso programa HelloJava.java mais uma vez para contar os elementos null e imprimir a contagem total.
Abra o arquivo
HelloJava.javano editor WebIDE.Substitua o código existente pelo seguinte:
import java.util.Arrays; import java.util.Objects; public class HelloJava { public static void main(String[] args) { String[] names = new String[5]; names[0] = "Alice"; names[1] = "Bob"; names[2] = null; names[3] = "Charlie"; names[4] = null; System.out.println("Counting null values using Stream API:"); // Convert the array to a Stream long nullCount = Arrays.stream(names) // Filter for null elements .filter(Objects::isNull) // Count the remaining elements (which are null) .count(); System.out.println("Total number of null elements: " + nullCount); } }Aqui está o que é novo:
long nullCount = ... .count();: Após filtrar o stream para incluir apenas elementosnull, chamamos a operação terminalcount(). Esta operação retorna o número de elementos no stream filtrado como um valorlong, que armazenamos na variávelnullCount.System.out.println("Total number of null elements: " + nullCount);: Esta linha imprime a contagem final de elementosnull.
Salve o arquivo
HelloJava.java.Compile o programa no Terminal:
javac HelloJava.javaExecute o programa:
java HelloJavaVocê deve ver a seguinte saída:
Counting null values using Stream API: Total number of null elements: 2Esta saída mostra que nosso programa contou corretamente os dois elementos
nullno array. Usar os métodosfilter()ecount()da Stream API juntos é uma maneira eficiente e legível de contar tipos específicos de elementos em uma coleção, incluindo valoresnull.
Você agora aprendeu três maneiras diferentes de lidar com valores null em um array Java: usando um loop for tradicional para verificar cada elemento, usando a Stream API para filtrar e identificar elementos null e usando a Stream API para filtrar e contar elementos null. Essas técnicas são fundamentais para escrever código Java robusto que evita NullPointerExceptions.
Resumo
Neste laboratório, aprendemos como verificar elementos nulos em um array Java usando diferentes abordagens. Começamos implementando um loop tradicional para iterar pelo array e verificar explicitamente cada elemento em busca de um valor nulo usando uma condição if. Este método fornece uma maneira clara e fundamental de identificar nulos e é útil para entender o conceito básico de tratamento de nulos em arrays.
Em seguida, exploramos técnicas mais modernas e concisas para detecção de nulos. O laboratório demonstrou como aproveitar a Java Stream API para verificar eficientemente a existência de nulos. Essa abordagem utiliza operações de stream para processar os elementos do array e determinar a presença de nulos em um estilo mais funcional. Finalmente, aprendemos como contar o número de elementos nulos dentro de um array, fornecendo uma maneira de quantificar a extensão dos valores nulos presentes. Esses métodos oferecem diferentes níveis de expressividade e eficiência para lidar com nulos em arrays Java.



