Enqueue e Dequeue em Java

Haider Ali 12 outubro 2023
  1. Fila
  2. Fila em Java
  3. Enfileirar e retirar da fila em Java
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.

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]
Autor: Haider Ali
Haider Ali avatar Haider Ali avatar

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

Artigo relacionado - Java Queue