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.

enfileirar e retirar da fila java

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]