Introdução
Neste laboratório, você aprenderá como verificar se uma Queue em Java está vazia. Esta é uma habilidade crucial para prevenir erros ao trabalhar com filas.
Exploraremos o método principal para essa verificação, isEmpty(), e também veremos como verificar o estado da fila usando o método size(). Além disso, abordaremos como lidar com cenários em que a fila pode ser nula. Através de exemplos práticos, você obterá experiência prática em determinar o vazio de uma fila Java.
Use isEmpty() para Verificação da Fila
Nesta etapa, exploraremos como verificar se uma Queue em Java está vazia usando o método isEmpty(). Esta é uma operação fundamental ao trabalhar com coleções, pois nos permite evitar erros que podem ocorrer ao tentar acessar elementos de uma fila vazia.
Primeiramente, vamos criar um programa Java simples que demonstra o uso de isEmpty().
Abra o WebIDE e navegue até o diretório
~/projectno File Explorer à esquerda.Clique com o botão direito no espaço vazio no File Explorer, selecione "New File" e nomeie-o como
QueueCheck.java.Abra o arquivo
QueueCheck.javano editor.Copie e cole o seguinte código no 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); } }Vamos rapidamente analisar as novas partes deste código:
import java.util.LinkedList;eimport java.util.Queue;: Estas linhas importam as classes necessárias para trabalhar com Filas. Estamos usandoLinkedListcomo uma implementação concreta da interfaceQueue.Queue<String> myQueue = new LinkedList<>();: Esta linha cria um novo objetoQueuechamadomyQueueque pode conter elementosString.myQueue.isEmpty(): Este é o método em que estamos focando. Ele retornatruese a fila não contiver elementos efalsecaso contrário.myQueue.add("Element 1");: Isso adiciona um elemento ao final da fila.
Salve o arquivo
QueueCheck.java(Ctrl+S ou Cmd+S).Abra o Terminal na parte inferior do WebIDE. Certifique-se de estar no diretório
~/project. Caso contrário, digitecd ~/projecte pressione Enter.Compile o programa Java digitando o seguinte comando e pressionando Enter:
javac QueueCheck.javaSe a compilação for bem-sucedida, você não verá nenhuma saída. Um arquivo
QueueCheck.classserá criado no diretório~/project.Execute o programa Java compilado digitando o seguinte comando e pressionando Enter:
java QueueCheckVocê deve ver uma saída semelhante a esta:
Is the queue empty before adding elements? true Is the queue empty after adding elements? false
Esta saída confirma que o método isEmpty() relatou corretamente o estado da fila antes e depois de adicionar elementos. Usar isEmpty() é a maneira recomendada de verificar se uma coleção está vazia, pois geralmente é mais eficiente do que verificar se o tamanho é zero, especialmente para certas implementações de coleção.
Verificar com o Método size()
Na etapa anterior, aprendemos como usar o método isEmpty() para verificar se uma fila está vazia. Outra maneira de determinar se uma coleção está vazia é verificando seu tamanho. O método size() retorna o número de elementos na coleção. Se o tamanho for 0, a coleção está vazia.
Embora isEmpty() seja geralmente preferido para verificar o vazio devido aos potenciais benefícios de desempenho com certos tipos de coleção, entender como usar size() também é importante.
Vamos modificar nosso programa QueueCheck.java para também usar o método size().
Abra o arquivo
QueueCheck.javano editor WebIDE.Modifique o método
mainpara incluir verificações usando o métodosize(). Substitua o métodomainexistente pelo seguinte 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()); } }Neste código atualizado, adicionamos linhas para verificar se o
size()da fila é igual a 0 antes e depois de adicionar elementos. Também imprimimos o tamanho final da fila.Salve o arquivo
QueueCheck.javamodificado.Abra o Terminal e certifique-se de estar no diretório
~/project.Compile o programa Java atualizado:
javac QueueCheck.javaExecute o programa compilado:
java QueueCheckVocê deve ver uma saída semelhante 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 você pode ver, tanto isEmpty() quanto verificar se size() == 0 dão o mesmo resultado para determinar se a fila está vazia. O método size() também é útil para saber exatamente quantos elementos estão atualmente na fila.
Lidar com Filas Nulas
Nas etapas anteriores, trabalhamos com um objeto Queue que foi devidamente inicializado. No entanto, na programação do mundo real, é possível encontrar situações em que uma referência a uma Queue (ou qualquer objeto) é null. Tentar chamar um método em um objeto null resultará em um NullPointerException, que é um erro de tempo de execução comum em Java.
É crucial lidar com referências null potenciais para evitar esses erros. Antes de chamar métodos como isEmpty() ou size() em uma Queue, você sempre deve verificar se a própria referência da fila é null.
Vamos modificar nosso programa QueueCheck.java mais uma vez para demonstrar como lidar com uma fila null.
Abra o arquivo
QueueCheck.javano editor WebIDE.Modifique o método
mainpara incluir uma verificação para uma filanull. Substitua o métodomainexistente pelo seguinte 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."); } } }Envolvemos o código original que opera em
myQueuedentro de um blocoif (myQueue != null). Isso garante que chamemos métodos emmyQueuesomente se ele não fornull. Também adicionamos uma seção para demonstrar a verificação de uma variável explicitamente definida comonull.Salve o arquivo
QueueCheck.javamodificado.Abra o Terminal e certifique-se de estar no diretório
~/project.Compile o programa Java atualizado:
javac QueueCheck.javaExecute o programa compilado:
java QueueCheckVocê deve ver uma saída semelhante 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 saída mostra que nosso código lida corretamente com o caso em que a fila é inicializada e o caso em que a referência da fila é null, evitando um NullPointerException. Lembre-se sempre de verificar se há null ao lidar com referências de objetos em Java, especialmente quando elas podem vir de fontes externas ou ser o resultado de operações que podem retornar null.
Resumo
Neste laboratório, aprendemos como verificar se uma Queue em Java está vazia. Nos concentramos principalmente no uso do método isEmpty(), que é a maneira padrão e recomendada de realizar essa verificação. Criamos um programa Java simples para demonstrar como isEmpty() retorna true para uma fila vazia e false após a adição de elementos.
Além disso, exploramos o método size() como uma forma alternativa de verificar o vazio, observando que um tamanho de 0 indica uma fila vazia. Por fim, discutimos a importância de lidar com potenciais NullPointerException verificando se um objeto de fila é nulo antes de tentar chamar métodos nele.



