HOWTO · Java
Enqueue e Dequeue em Java
Noções básicas sobre Enqueue e Dequeue em Java e todas as outras informações relevantes
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]