HOWTO · Java

Fila FIFO em Java

Este artigo apresenta FIFO e filas em Java.

Uma fila é uma estrutura de dados linear que implementa o conceito primeiro a entrar, primeiro a sair. O conceito significa que os elementos que entram primeiro são os primeiros a sair.

Os termos técnicos para representar a Queue estão usando as extremidades frontal e traseira. Os elementos são adicionados à Queue por trás e são retirados pela frente.

O exemplo do mundo real do conceito é a fila do balcão de ingressos, onde a pessoa que está na primeira posição obtém o ingresso primeiro. Agora em Java, o conceito ou a estrutura de dados é implementado na interface Queue. A interface está presente no pacote java.util.

Abaixo está o bloco de código que demonstra a estrutura da fila.

package F10;

import java.util.LinkedList;
import java.util.Queue;

public class Main {
  public static void main(String[] args) {
    Queue queue = new LinkedList<String>();
    queue.add("First");
    queue.add("Second");
    queue.add("third");
    System.out.println("Created Queue: " + queue);
    String value = (String) queue.remove();
    System.out.println("The element deleted from the head is: " + value);
    System.out.println("The queue after deletion: " + queue);
    String head = (String) queue.peek();
    System.out.println("The head of the present queue is: " + head);
    int size = queue.size();
    System.out.println("The size of the queue is: " + size);
  }
}

Existem várias maneiras de implementar a estrutura de dados Queue em Java. No bloco de código acima, o uso de LinkedList implementa o conceito.

Primeiro, uma referência Queue é instanciada usando a instrução new LinkedList. O método add está presente na interface Queue, que insere o elemento especificado na Queue. A função retorna booleano true quando o valor é acrescentado.

O método pode lançar a IllegalStateException quando o elemento não pode ser adicionado devido a restrições de tamanho. Ele também lança NullPointerException quando o valor transmitido é nulo. Quando o conjunto inicial de elementos é anexado à lista, a Fila é impressa. A instrução System.out.println pega a string que precisa ser impressa.

Em seguida, a função remove é chamada na instância Queue. Ele removerá o elemento presente no cabeçalho da Fila e, portanto, retornará o elemento principal.

Existe uma função poll semelhante que também remove o elemento presente na cabeça. A única diferença está na função remove que lança NoSuchElementException quando a Fila está vazia. Os valores removidos são armazenados em uma variável e impressos. A fila restante é impressa para verificar os elementos restantes.

A função peek recupera o elemento superior da Fila e não o remove; é uma forma de verificar o elemento na cabeça da Fila. A função retorna o valor principal e lança NoSuchElementException quando a Fila está vazia. A função size está presente na interface Collection e retorna o tamanho da coleção. Portanto, este método imprime o tamanho dos elementos restantes na Fila.

Produção:

Created Queue: [First, Second, third]
The element deleted from the head is: First
The Queue after deletion: [Second, third]
The head of the present Queue is: Second
The size of the Queue is: 2