Estrutura de Dados e Algoritmos com Java #19-25: Filas (Queue)

1.497 visualizações

Publicada em

Curso de Estrutura de Dados e Algoritmos com Java Completo com Certificado e Fórum para dúvidas: http://loiane.training

Site: http://loiane.training
Blog: http://loiane.com
Facebook: https://www.facebook.com/loianegroner
Github: https://github.com/loiane
Twitter: https://twitter.com/loiane

Publicada em: Tecnologia
0 comentários
2 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
1.497
No SlideShare
0
A partir de incorporações
0
Número de incorporações
961
Ações
Compartilhamentos
0
Downloads
35
Comentários
0
Gostaram
2
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Estrutura de Dados e Algoritmos com Java #19-25: Filas (Queue)

  1. 1. FILAS (QUEUES) Estrutura de Dados e Algoritmos com Java <loiane.training />
  2. 2. FILAS (QUEUES) Introdução 19 Estrutura de Dados e Algoritmos com Java <loiane.training />
  3. 3. http://baianolandia.blog.br/wp-content/uploads/2016/03/fila-de-banco.jpg
  4. 4. 31.3 32 33.7 34 33.1 [0] [1] [2] [3] [4] [5] [7][6] Início tamanho = 5 Vetor, Array, Lista
  5. 5. FIFO
  6. 6. FIFO First In First Out
  7. 7. FIFO First In First Out Primeiro a entrar, primeiro a sair
  8. 8. 31.3 32 33.7 34 33.1 [0] [1] [2] [3] [4] [5] [6] Início tamanho = 5 Fila 33.7 enfileirar (queue)
  9. 9. 31.3 32 33.7 34 33.1 [0] [1] [2] [3] [4] [5] [6] Início tamanho = 6 Fila desenfileirar (dequeue) 33.7 último elemento adicionado
  10. 10. FILAS (QUEUES): INTRODUÇÃO ➤ Classe Fila ➤ Definição ➤ Enfileirar elemento ➤ Espiar/Verificar elemento início da pilha ➤ Desenfileirar elemento da pilha ➤ API Java Queue ➤ Filas com prioridade ➤ API Java PriorityQueue ➤ Exercícios
  11. 11. DESAFIO: SABENDO DO COMPORTAMENTO DA PILHA E FILA, TENTAR DESENVOLVER A CLASSE FILA
  12. 12. DIAGRAMA CLASSE FILA
  13. 13. DIAGRAMA CLASSE FILA
  14. 14. USANDO A SUPER CLASSE
  15. 15. CLASSE FILA public class Fila<T> extends EstruturaEstatica<T>{ public Fila(int capacidade) { super(capacidade); } public Fila() { super(); } }
  16. 16. TESTE Fila<Integer> fila = new Fila<>(); System.out.println(fila.estaVazia()); System.out.println(fila.tamanho());
  17. 17. FILAS (QUEUES): INTRODUÇÃO ➤ Classe Fila ➤ Definição ✅ ➤ Enfileirar elemento ➤ Espiar/Verificar elemento início da pilha ➤ Desenfileirar elemento da pilha ➤ API Java Queue ➤ Filas com prioridade ➤ API Java PriorityQueue ➤ Exercícios
  18. 18. FILAS (QUEUES) Enfileirar elemento 20 Estrutura de Dados e Algoritmos com Java <loiane.training />
  19. 19. FIFO First In First Out Primeiro a entrar, primeiro a sair
  20. 20. 31.3 32 33.7 34 33.1 [0] [1] [2] [3] [4] [5] [6] Início tamanho = 5 Fila 33.7 enfileirar (queue)
  21. 21. ENFILEIRAR (ADICIONAR ELEMENTO) public void enfileira(T elemento) { aumentaCapacidade(); elementos[tamanho] = elemento; tamanho++; //elementos[tamanho++] = elemento; }
  22. 22. ENFILEIRAR (ADICIONAR ELEMENTO) - REUSANDO CÓDIGO public void enfileira(T elemento) { super.adiciona(elemento); } Mesmo código de add elemento na pilha
  23. 23. TESTE Fila<Integer> fila = new Fila<>(); fila.enfileira(3); fila.enfileira(1); fila.enfileira(2); System.out.println(fila.estaVazia()); //false System.out.println(fila.tamanho()); //3 System.out.println(fila); //[3, 1, 2]
  24. 24. FILAS (QUEUES): INTRODUÇÃO ➤ Classe Fila ➤ Definição ✅ ➤ Enfileirar elemento ✅ ➤ Espiar/Verificar elemento início da pilha ➤ Desenfileirar elemento da pilha ➤ API Java Queue ➤ Filas com prioridade ➤ API Java PriorityQueue ➤ Exercícios
  25. 25. FILAS (QUEUES) Espiar início da fila 21 Estrutura de Dados e Algoritmos com Java <loiane.training />
  26. 26. 31.3 32 33.7 34 33.1 [0] [1] [2] [3] [4] [5] [7][6] Início tamanho = 5 Fila
  27. 27. ESPIAR INÍCIO DA FILA (PEEK) public T espiar(){ if (this.estaVazia()){ return null; } return elementos[0]; }
  28. 28. TESTE Fila<Integer> fila = new Fila<>(); fila.enfileira(3); fila.enfileira(1); fila.enfileira(2); System.out.println(fila.espiar()); //3
  29. 29. FILAS (QUEUES): INTRODUÇÃO ➤ Classe Fila ➤ Definição ✅ ➤ Enfileirar elemento ✅ ➤ Espiar/Verificar elemento início da fila ✅ ➤ Desenfileirar elemento da fila ➤ API Java Queue ➤ Filas com prioridade ➤ API Java PriorityQueue ➤ Exercícios
  30. 30. FILAS (QUEUES) Desenfileirar Elemento 22 Estrutura de Dados e Algoritmos com Java <loiane.training />
  31. 31. FIFO First In First Out Primeiro a entrar, primeiro a sair
  32. 32. 31.3 32 33.7 34 33.1 [0] [1] [2] [3] [4] [5] [6] Início tamanho = 6 Fila 33.7 desenfileirar (dequeue)
  33. 33. DESENFILEIRAR ELEMENTO (DEQUEUE) public T desenfileira(){ if (this.estaVazia()){ return null; } T objetoRemovido = this.elementos[0]; this.remove(0); return objetoRemovido; }
  34. 34. TESTE Fila<Integer> fila = new Fila<>(); fila.enfileira(3); fila.enfileira(1); fila.enfileira(2); System.out.println(fila.desenfileira()); //3 System.out.println(fila.desenfileira()); //1
  35. 35. FILAS (QUEUES): INTRODUÇÃO ➤ Classe Fila ➤ Definição ✅ ➤ Enfileirar elemento ✅ ➤ Espiar/Verificar elemento início da fila ✅ ➤ Desenfileirar elemento da fila ✅ ➤ API Java Queue ➤ Filas com prioridade ➤ API Java PriorityQueue ➤ Exercícios
  36. 36. FILAS (QUEUES) API Java Queue + LinkedList 23 Estrutura de Dados e Algoritmos com Java <loiane.training />
  37. 37. TESTE Queue<Integer> fila = new LinkedList<>(); fila.add(3); fila.add(2); fila.add(1); System.out.println(fila); fila.remove(); System.out.println(fila); System.out.println(fila.peek());
  38. 38. FILAS (QUEUES): INTRODUÇÃO ➤ Classe Fila ➤ Definição ✅ ➤ Enfileirar elemento ✅ ➤ Espiar/Verificar elemento início da fila ✅ ➤ Desenfileirar elemento da fila ✅ ➤ API Java Queue ✅ ➤ Filas com prioridade ➤ API Java PriorityQueue ➤ Exercícios
  39. 39. FILAS (QUEUES) Filas com prioridade 24 Estrutura de Dados e Algoritmos com Java <loiane.training />
  40. 40. FILA COM PRIORIDADE public class FilaComPrioridade<T> extends Fila<T>{ public void enfileira(T elemento) { Comparable<T> chave = (Comparable<T>) elemento; int i; for (i=0; i<this.tamanho; i++){ if (chave.compareTo(this.elementos[i]) < 0) { break; } } super.adiciona(i, elemento); } }
  41. 41. TESTE public class Pessoa implements Comparable<Pessoa>{ private String nome; private int prioridade; @Override public int compareTo(Pessoa o) { if (prioridade > o.prioridade){ return 1; } else if (prioridade < o.prioridade){ return -1; } return 0; } }
  42. 42. TESTE FilaComPrioridade<Pessoa> fila = new FilaComPrioridade<>(); fila.enfileira(new Pessoa("C", 3)); fila.enfileira(new Pessoa("D", 7)); System.out.println(fila); fila.enfileira(new Pessoa("B", 2)); System.out.println(fila); fila.enfileira(new Pessoa("A", 1)); System.out.println(fila); fila.enfileira(new Pessoa("F", 8)); System.out.println(fila);
  43. 43. FILAS (QUEUES): INTRODUÇÃO ➤ Classe Fila ➤ Definição ✅ ➤ Enfileirar elemento ✅ ➤ Espiar/Verificar elemento início da fila ✅ ➤ Desenfileirar elemento da fila ✅ ➤ API Java Queue ✅ ➤ Filas com prioridade ✅ ➤ API Java PriorityQueue ➤ Exercícios
  44. 44. FILAS (QUEUES) API Java PriorityQueue 25 Estrutura de Dados e Algoritmos com Java <loiane.training />
  45. 45. TESTE Queue<Pessoa> fila = new PriorityQueue<>(new Comparator<Pessoa>() { public int compare(Pessoa p1, Pessoa p2) { return Integer.valueOf(p1.getPrioridade()).compareTo(p2.getPrioridade()); } }); fila.add(new Pessoa("C", 3)); fila.add(new Pessoa("D", 7)); System.out.println(fila); fila.add(new Pessoa("B", 2)); System.out.println(fila); fila.add(new Pessoa("A", 1)); System.out.println(fila); fila.add(new Pessoa("F", 8)); System.out.println(fila);
  46. 46. FILAS (QUEUES): INTRODUÇÃO ➤ Classe Fila ➤ Definição ✅ ➤ Enfileirar elemento ✅ ➤ Espiar/Verificar elemento início da fila ✅ ➤ Desenfileirar elemento da fila ✅ ➤ API Java Queue ✅ ➤ Filas com prioridade ✅ ➤ API Java PriorityQueue ✅ ➤ Exercícios
  47. 47. EXERCÍCIOS http://goo.gl/fFQCDD
  48. 48. https://github.com/loiane/estrutura-dados-algoritmos-java
  49. 49. Download código fonte e certificado Cadastro em: http://loiane.training
  50. 50. http://loiane.com facebook.com/loianegroner twitter.com/loiane https://github.com/loiane youtube.com/loianegroner http://loiane.training

×