Você está aqui: Java ::: Estruturas de Dados ::: Filas

Como criar uma fila em Java usando um vetor de inteiros e programação orientada a objetos - A classe Fila

Quantidade de visualizações: 805 vezes
Uma fila é uma estrutura de dados do tipo FIFO (First-In-First-Out), na qual o primeiro elemento a entrar na estrutura é o primeiro a ser removido.

Há inúmeras formas de se implementar uma fila em Java. Nesta dica mostrarei como podemos realizar essa tarefa usando uma classe Fila, na qual usaremos um vetor redimensionável (criado a partir de um objeto List).

Note que a nossa classe Fila possui os seguintes métodos enfileirar(), desenfileirar(), is_cheia(), is_vazia() e exibir().

Veja o código completo para a classe Fila:

Código para Fila.java:

package estudos;

// definição da classe Fila
public class Fila{
  private int elementos[];
  private int inicio;
  private int fim;
  private int tamanho;
  private int capacidade;
  
  // construtor da classe
  public Fila(int capacidade){
    // vetor usado para guardar os elementos
    this.elementos = new int[capacidade];
    // para controlar o início da fila
    this.inicio = 0;
    // para controlar o final da fila
    this.fim = 0;
    // para registrar o tamanho da fila
    this.tamanho = 0;
    // manter um registro da capacidade
    this.capacidade = capacidade;
  }
      
  // método que permite verificar se a fila está cheia
  public boolean isCheia(){
    // a capacidade é igual ao tamanho da fila?  
    return this.capacidade == this.tamanho;
  }
      
  // método que permite enfileirar um novo valor na fila
  public void enfileirar(int valor){
    // a fila está cheia?
    if(this.isCheia()){
      System.out.println("Fila cheia. Não foi possível enfileirar");
    }
      
    // insere o novo elemento no final da fila
    this.elementos[this.fim] = valor;
    // ajusta a variável fim para a próxima posição
    this.fim += 1;
    // incrementa o tamanho da fila
    this.tamanho += 1;
    // mostra uma mensagem de sucesso para fins de depuração
    System.out.println("O valor " + valor + " foi enfileirado.");
  }
    
  // método que permite desenfileirar o elemento na frente da fila
  public int desenfileirar(){
    int valor = -1;

    // a fila está vazia?
    if(this.isVazia()){
      System.out.println("A fila esta vazia");
      return valor;
    }
      
    // a fila não está vazia. Vamos retornar o elemento na frente
    valor = this.elementos[this.inicio];
    // inicio agora aponta para o próximo elemento
    this.inicio += 1;
    
    // depois da remoção a lista vai ficar vazia?
    if(this.inicio == this.fim){
      this.inicio = 0;
      this.fim = 0;
    }

    // diminuimos o tamanho da fila
    this.tamanho -= 1;
    // retorna o elemento removido
    return valor;
  }
      
  // método que permite verificar se a fila está vazia
  public boolean isVazia(){
    // o tamanho da fila é 0?  
    return this.tamanho == 0;
  }
      
  // método que permite exibir o conteúdo da fila
  public void exibir(){
    // a fila está vazia?
    if(this.isVazia()){
      System.out.println("A fila esta vazia");
    }
    else{
      // varremos os elementos da fila
      System.out.print("Elementos na fila: ");
      for(int i = this.inicio; i < this.fim; i++){
        System.out.print(this.elementos[i] + " ");
      }

      System.out.println("\nO elemento no início da fila é: " + this.elementos[this.inicio]);
      System.out.println("O elemento no final da fila é: " + this.elementos[this.fim - 1]);
      System.out.println("O índice do elemento no início da fila é: " + this.inicio);
      System.out.println("O índice do elemento no final da fila é: " + (this.fim - 1));
    }
  }
}

Código para Estudos.java:

package estudos;

public class Estudos{
  public static void main(String args[]){
    // vamos criar uma nova fila com capacidade para 10 elementos
    Fila fila = new Fila(10);

    // vamos enfileirar 4 valores
    if(!fila.isCheia()){
      fila.enfileirar(30);
      fila.enfileirar(19);
      fila.enfileirar(73);
      fila.enfileirar(58);
    }
    else{
      System.out.println("A fila está cheia");
    }
      
    // agora vamos exibir o conteúdo da fila
    if(!fila.isVazia()){
      fila.exibir();
    }

    // vamos desenfileirar 3 valores 
    for(int i = 0; i < 3; i++){
      if(!fila.isVazia()){
        int valor = fila.desenfileirar();
        System.out.println("O valor " + valor + " foi desenfileirado.");
      } 
    }

    // agora vamos exibir o conteúdo da fila novamente
    if(!fila.isVazia()){
      fila.exibir();
    }      
  }
}

Ao executar este código Java nós teremos o seguinte resultado:

O valor 30 foi enfileirado.
O valor 19 foi enfileirado.
O valor 73 foi enfileirado.
O valor 58 foi enfileirado.
Elementos na fila: 30 19 73 58
O elemento no início da fila é: 30
O elemento no final da fila é: 58
O índice do elemento no início da fila é: 0
O índice do elemento no final da fila é: 3
O valor 30 foi desenfileirado.
O valor 19 foi desenfileirado.
O valor 73 foi desenfileirado.
Elementos na fila: 58
O elemento no início da fila é: 58
O elemento no final da fila é: 58
O índice do elemento no início da fila é: 3
O índice do elemento no final da fila é: 3

Link para compartilhar na Internet ou com seus amigos:

Desafios, Exercícios e Algoritmos Resolvidos de Java

Veja mais Dicas e truques de Java

Dicas e truques de outras linguagens

E-Books em PDF

E-Book 350 Exercícios Resolvidos de Java - PDF com 500 páginas
Domine lógica de programação e a linguagem Java com o nosso E-Book 350 Exercícios Exercícios de Java, para você estudar onde e quando quiser.

Este e-book contém exercícios resolvidos abrangendo os tópicos: Java básico, matemática e estatística, programação dinâmica, strings e caracteres, entrada e saída, estruturas condicionais, vetores e matrizes, funções, laços, recursividade, internet, arquivos e diretórios, programação orientada a objetos e muito mais.
Ver Conteúdo do E-book
E-Book 650 Dicas, Truques e Exercícios Resolvidos de Python - PDF com 1.200 páginas
Domine lógica de programação e a linguagem Python com o nosso E-Book 650 Dicas, Truques e Exercícios Exercícios de Python, para você estudar onde e quando quiser.

Este e-book contém dicas, truques e exercícios resolvidos abrangendo os tópicos: Python básico, matemática e estatística, banco de dados, programação dinâmica, strings e caracteres, entrada e saída, estruturas condicionais, vetores e matrizes, funções, laços, recursividade, internet, arquivos e diretórios, programação orientada a objetos e muito mais.
Ver Conteúdo do E-book

Linguagens Mais Populares

1º lugar: Java
2º lugar: Python
3º lugar: C#
4º lugar: PHP
5º lugar: C
6º lugar: Delphi
7º lugar: JavaScript
8º lugar: C++
9º lugar: VB.NET
10º lugar: Ruby



© 2025 Arquivo de Códigos - Todos os direitos reservados
Neste momento há 25 usuários muito felizes estudando em nosso site.