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

Como criar uma fila em Java usando um vetor de ints - Estruturas de Dados em Java

Quantidade de visualizações: 2280 vezes
A Fila é uma estrutura de dados do tipo FIFO - First-In, First-Out (Primeiro a entrar, primeiro a sair). Neste tipo de estrutura, o primeiro elemento a ser inserido é o primeiro a ser removido. Funciona exatamente igual a fila de um banco, fila para comprar ingressos, fila para pagar no caixa da lanchonete, etc.

Veja a imagem a seguir:



Embora seja mais comum a criação de uma estrutura de dados do tipo Fila de forma dinâmica (usando ponteiros e referências), nesta dica eu mostrarei como podemos criá-la em Java usando um array, ou seja, um vetor. No exemplo eu usei inteiros, mas você pode modificar para o tipo de dados que você achar mais adequado.

Veja o código completo para uma classe Fila usando um vetor de ints. Veja que o tamanho do vetor é informado no construtor da classe. Note também a lógica empregada na construção dos métodos enfileirar(), desenfileirar() e imprimirFila():

Código para Fila.java:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

package estudos;

public class Fila {
  private int elementos[];
  private int inicio; // início da fila
  private int fim; // fim da fila
  private int maximo; // quantidade máxima de elementos na fila

  // construtor da Fila que aceita o tamanho
  public Fila(int tamanho) {
    // constrói o vetor com o tamanho informado
    this.elementos = new int[tamanho];
    this.inicio = 0; // define o início como sendo o primeiro elemento
    this.fim = -1; // fila vazia. Não tem final ainda
    this.maximo = tamanho; // ajusta a quantidade máxima de elementos
  }

  // método que permite enfileirar um novo elemento
  public void enfileirar(int item) {
    // a fila já está cheia
    if (this.fim == (this.maximo - 1)) {
      System.out.println("\nA fila está cheia.\n");
    } // ainda há espaço na fila
    else {
      this.elementos[++this.fim] = item;
    }
  }

  // método que permite desenfileirar e retornar
  // o elemento no início da fila
  public int desenfileirar() {
    // a fila está vazia
    if (this.inicio == (this.fim + 1)) {
      System.out.println("\nA fila está vazia.\n");
      return -1;
    } // retorna o elemento desenfileirado
    else {
      System.out.println("Elemento desenfileirado: "
        + this.elementos[this.inicio]);
      return this.elementos[this.inicio++];
    }
  }

  // exibe os elementos da fila
  public void exibirFila() {
    // a fila está vazia
    if (this.inicio == (this.fim + 1)) {
      System.out.println("\nA fila está vazia.\n");
    } 
    else {
      for (int i = this.inicio; i <= this.fim; i++) {
        System.out.println("Item[" + (i + 1) + "]: "
          + this.elementos[i]);
      }
    }
  }
}

Veja agora o código para a classe principal, ou seja, a classe Principal usada para testar a funcionalidade da nossa fila:

Código para Principal.java:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

package estudos;

public class Estudos {

  public static void main(String[] args) {
    // Vamos criar uma nova fila com espaço para 5 elementos
    Fila fila = new Fila(5);

    // vamos inserir 3 elementos na fila
    fila.enfileirar(34);
    fila.enfileirar(27);
    fila.enfileirar(11);

    // vamos imprimir a fila
    System.out.println("\nOs itens na fila são: ");
    fila.exibirFila();

    // vamos desenfileirar dois itens
    System.out.println();
    fila.desenfileirar();
    fila.desenfileirar();

    // vamos imprimir a fila novamente
    System.out.println("\nOs itens na fila são: ");
    fila.exibirFila();
  }
}

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

Os itens na fila são:
Item[1]: 34
Item[2]: 27
Item[3]: 11

Elemento desenfileirado: 34
Elemento desenfileirado: 27

Os itens na fila são:
Item[3]: 11

Link para compartilhar na Internet ou com seus amigos:

Java ::: Desafios e Lista de Exercícios Resolvidos ::: Laços

Exercício Resolvido de Java - Faça um programa que sorteie um número aleatório entre 0 e 500 e pergunte ao usuário qual é o "número mágico". O programa deverá

Quantidade de visualizações: 291 vezes
Pergunta/Tarefa:

Faça um programa que sorteie um número aleatório entre 0 e 500 e pergunte ao usuário qual é o "número mágico". O programa deverá indicar se a tentativa efetuada pelo usuário é maior ou menor que o número mágico e contar o número de tentativas. Quando o usuário conseguir acertar o número o programa deverá classificar o usuário como:

De 1 a 3 tentativas: muito sortudo
De 4 a 6 tentativas: sortudo
De 7 a 10 tentativas: normal
> 10 tentativas: tente novamente

Sua saída deverá ser parecida com:

Adivinhe o número mágico: 100
Tente um número menor.

Adivinhe o número mágico: 50
Tente um número maior.

Adivinhe o número mágico: 60
Tente um número maior.

Adivinhe o número mágico: 80
Tente um número maior.

Adivinhe o número mágico: 90
Tente um número maior.

Adivinhe o número mágico: 95
Tente um número menor.

Adivinhe o número mágico: 94
Tente um número menor.

Adivinhe o número mágico: 93
Tente um número menor.

Adivinhe o número mágico: 92
Você acertou o número em 9 tentativas.
Classificação: Normal
Resposta/Solução:

Veja a resolução comentada deste exercício usando Java:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

package estudos;

import java.util.Random;
import java.util.Scanner;

public class Estudos {
  public static void main(String[] args) {
    // variáveis usadas na resolução do problema
    int numero_magico, palpite, tentativas = 0;
    boolean acertou = false;
    
    // para ler a entrada do usuário
    Scanner entrada = new Scanner(System.in);
    
    // vamos sortear o número entre 0 e 500
    Random rand = new Random();
    numero_magico = rand.nextInt(501);
    
    // um laço que repete enquanto o usuário não
    // acertar o número mágico
    while (!acertou) {
      System.out.print("Adivinhe o número mágico: ");
      palpite = Integer.parseInt(entrada.nextLine());
      
      // registra essa tentativa
      tentativas = tentativas + 1;
      
      // o usuário acertou o número mágico?
      if (palpite == numero_magico) {
        System.out.println("Você acertou o número em " + tentativas + " tentativas.");
        
        // mostra a classificação do usuário
        if (tentativas <= 3) {
          System.out.println("Classificação: Muito Sortudo");
        }
        else if ((tentativas >= 4) && (tentativas <= 6)) {
          System.out.println("Classificação: Sortudo");
        }
        else if ((tentativas >= 7) && (tentativas <= 10)) {
          System.out.println("Classificação: Normal");
        }
        else {
          System.out.println("Classificação: Tente Novamente");
        }
        
        // sai do laço
        acertou = true;
      } 
      else {
        // indica se o palpite é maior ou menor
        if (palpite < numero_magico) {
          System.out.println("Tente um número maior.\n");
        }
        else {
          System.out.println("Tente um número menor.\n");
        }
      }
    }
  }
}



Java ::: Desafios e Lista de Exercícios Resolvidos ::: Java Básico

Exercícios Resolvidos de Java - Um programa Java console ou GUI que exiba um número aleatório inteiro entre 0 e 10 (incluindo)

Quantidade de visualizações: 12652 vezes
Pergunta/Tarefa:

Escreva um programa Java console ou GUI que exiba um número aleatório inteiro entre 0 e 10 (incluindo). Em seguida escreva um nova versão que exiba um número aleatório entre 10 e 20 (incluindo):

Resposta/Solução:

Veja a resolução e explicação para o código Java que exibe um número aleatório entre 0 e 10 (incluindo o 0 e 10):

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

O método random() da classe Math retorna um número aleatório
maior que ou igual a 0,0 e menor que 1,0. Assim, se o número
gerado for:

0.46095278727662825

e o multiplicarmos por 10, teremos 4.609527872766282. Se
aplicarmos uma conversão para inteiro teremos 4. Assim, para
garantir que o número 10 também poderá ser sorteado, basta
multiplicarmos Math.random() por 11. Veja:

public static void main(String[] args){
  // vamos gerar um número aleatório entre 0 e 10
  int numero = (int)(Math.random() * 11);

  // vamos exibir o número aleatório gerado
  System.out.println("O número gerado foi: " + numero);
}

Para sortear um número aleatório entre 10 e 20, só precisamos
somar 10 ao número gerado. Veja:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

public static void main(String[] args){
  // vamos gerar um número aleatório entre 10 e 20
  int numero = 10 + (int)(Math.random() * 11);

  // vamos exibir o número aleatório gerado
  System.out.println("O número gerado foi: " + numero);
}



Java ::: Coleções (Collections) ::: ArrayList

Como percorrer os elementos de uma ArrayList do Java usando um Iterator

Quantidade de visualizações: 21947 vezes
Nesta dica mostrarei como é possível usar um iterador Iterator. Um Iterator, do pacote java.util, é um objeto que pode ser usado para percorrer os itens de uma coleção, tais como ArrayList e HashSet.

Veja um exemplo no qual temos uma ArrayList genérica de strings. Depois de adicionar três nomes na ArrayList nós usamos um Iterator para percorrer a lista e mostrar os elementos de forma individual:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

package estudos_java;

import java.util.*;

public class Estudos{
  public static void main(String[] args){
    // cria uma ArrayList que conterá strings
    ArrayList<String> pessoas = new ArrayList<>();
    
    // adiciona itens na lista
    pessoas.add("Alberto");
    pessoas.add("Victor");
    pessoas.add("João");
    	
    // exibe os itens da lista usando um Iterator	
    for(Iterator<String> it = pessoas.iterator(); it.hasNext();){
      System.out.println(it.next());  
    }

    System.exit(0);
  }
}

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

Alberto
Victor
João


Desafios, Exercícios e Algoritmos Resolvidos de Java

Veja mais Dicas e truques de Java

Dicas e truques de outras linguagens

Códigos Fonte

Programa de Gestão Financeira Controle de Contas a Pagar e a Receber com Cadastro de Clientes e FornecedoresSoftware de Gestão Financeira com código fonte em PHP, MySQL, Bootstrap, jQuery - Inclui cadastro de clientes, fornecedores e ticket de atendimento
Diga adeus às planilhas do Excel e tenha 100% de controle sobre suas contas a pagar e a receber, gestão de receitas e despesas, cadastro de clientes e fornecedores com fotos e histórico de atendimentos. Código fonte completo e funcional, com instruções para instalação e configuração do banco de dados MySQL. Fácil de modificar e adicionar novas funcionalidades. Clique aqui e saiba mais
Controle de Estoque completo com código fonte em PHP, MySQL, Bootstrap, jQuery - 100% funcional e fácil de modificar e implementar novas funcionalidadesControle de Estoque completo com código fonte em PHP, MySQL, Bootstrap, jQuery - 100% funcional e fácil de modificar e implementar novas funcionalidades
Tenha o seu próprio sistema de controle de estoque web. com cadastro de produtos, categorias, fornecedores, entradas e saídas de produtos, com relatórios por data, margem de lucro e muito mais. Código simples e fácil de modificar. Acompanha instruções para instalação e criação do banco de dados MySQL. Clique aqui e saiba mais

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á 67 usuários muito felizes estudando em nosso site.