Enqueue e Dequeue em Java
Antes de entrarmos nos conceitos de enqueue
e dequeue
em Java, vamos construir uma compreensão básica de todo o conceito de Queue. O que é realmente? O exemplo do mundo real e muito mais. Vamos mergulhar.
Fila
A fila em termos de programação é uma estrutura linear com uma ordem unilateral por meio da qual esse tipo de dados é executado. A ordem unilateral é FIFO (primeiro a entrar, primeiro a sair). Um exemplo do mundo real seria a fila de pessoas (fila) que você vê fora de um banco. Quem entra primeiro é servido primeiro e sai. Assim, quando dizemos enqueue
e dequeue
na programação, queremos dizer adicionar e remover um item, respetivamente. Dê uma olhada na foto abaixo.
Como você pode ver, a adição (enfileirar) na fila será sempre na parte de trás, e a remoção (desenfileirar) sempre será na frente. Agora que você tem um entendimento concreto da fila, vamos dar uma olhada na implementação da fila em Java.
Fila em Java
Em Java, a fila é considerada uma interface implementada por uma lista vinculada. O exemplo de código a seguir mostra como criar o objeto da fila em Java.
import java.util.LinkedList; // Class Which implements queue list etc.
import java.util.Queue; //queue is an iterface
public class Main {
public static void main(String[] args) {
Queue<String> queue = new LinkedList<>();
// to implement Queue
}
}
Você precisa adicionar as classes de listas e filas vinculadas para implementar uma em Java. (Veja no início do código). Ao implementar a fila, usamos a lista vinculada para essa finalidade. Agora vamos entender os métodos envolvidos na adição e remoção de um item da fila.
Enfileirar e retirar da fila em Java
Conforme mencionado acima, a ordem para esses tipos de operações é FIFO. Então, vamos adicionar (enqueue
) algum valor na fila que criamos. Como a fila é uma string, os seguintes valores seriam suficientes.
import java.util.LinkedList; // Class Which implements queue list etc.
import java.util.Queue; //queue is an iterface
public class Main {
public static void main(String[] args) {
Queue<String> queue = new LinkedList<>();
// to implement Queue
// Adding In Queue using `add()` method
queue.add("Bill Gates"); // enque
queue.add("Mark Mark Zuckerberg"); // enque
queue.add("Elon Musk"); // enquue
queue.add("Jeff Bezos");
queue.offer("Donald Trump"); // alternatice enque
System.out.println("Queue : " + queue); // queue print
}
}
No exemplo acima, adicionamos quatro valores usando os dois métodos a seguir.
queue.add()
Como você pode ver no código, adicionamos quatro valores de string na fila. Outra coisa que você deve saber sobre esse método é que ele lança uma exceção não verificada. Por exemplo, se sua fila for restrita, o método add()
retornará uma exceção ao adicionar outro elemento enquanto não houver espaço para ele. Tudo depende da natureza da fila. Saiba mais sobre filas em Java aqui.
queue.offer()
O método offer()
é uma alternativa de add()
. Este método específico não lança exceções. Em vez disso, ele fornece valores verdadeiros e falsos. Adicionamos o quinto elemento na fila usando offer()
no exemplo acima. A saída do programa acima será a seguinte.
Queue : [ Bill Gates, Mark Zuckerberg, Elon Musk, Jeff Bezos, Donald Trump ]
Agora que você entendeu como pode (enqueue
) adicionar elementos na fila. Vamos ver como você pode remover um item da fila.
queue.remove()
O método remove()
é usado para excluir um elemento da fila. Ele será operado bem na frente da fila. Por exemplo, se removêssemos um elemento da fila acima, o primeiro elemento a ser removido seria Bill Gates
. Dê uma olhada no código a seguir.
import java.util.LinkedList; // Class Which implements queue list etc.
import java.util.Queue; //queue is an iterface
public class Main {
public static void main(String[] args) {
Queue<String> queue = new LinkedList<>();
// to implement Queue
// Adding In Queue using `add()` method
queue.add("Bill Gates"); // enque
queue.add("Mark Mark Zuckerberg"); // enque
queue.add("Elon Musk"); // enquue
queue.add("Jeff Bezos");
queue.offer("Donald Trump"); // alternatice enque
System.out.println("Queue : " + queue); // queue print
String name = queue.remove(); // Dequeue
System.out.println("Removed from queue : " + name);
System.out.println(queue);
name = queue.poll(); // altrenative deque method
System.out.println("Removed from queue : " + name);
System.out.println(queue);
}
}
Como você pode ver no exemplo de código acima, usamos o método remove()
para excluir um item da fila. Ele lançará uma exceção não verificada se você tentar excluir um elemento de uma fila vazia.
queue.poll()
O método alternativo de remove()
é poll()
que retorna o valor NULL
ao excluir um elemento de uma fila vazia. Dê uma olhada na saída do código acima.
Queue : [Bill Gates, Mark Mark Zuckerberg, Elon Musk, Jeff Bezos, Donald Trump]
Removed from queue : Bill Gates
[Mark Mark Zuckerberg, Elon Musk, Jeff Bezos, Donald Trump]
Removed from queue : Mark Mark Zuckerberg
[Elon Musk, Jeff Bezos, Donald Trump]
Haider specializes in technical writing. He has a solid background in computer science that allows him to create engaging, original, and compelling technical tutorials. In his free time, he enjoys adding new skills to his repertoire and watching Netflix.
LinkedIn