SlideShare une entreprise Scribd logo
1  sur  51
Télécharger pour lire hors ligne
FILAS (QUEUES)
Estrutura de Dados e Algoritmos
com Java
<loiane.training />
FILAS (QUEUES)
Introdução
19
Estrutura de Dados e
Algoritmos com Java
<loiane.training />
http://baianolandia.blog.br/wp-content/uploads/2016/03/fila-de-banco.jpg
31.3 32 33.7 34 33.1
[0] [1] [2] [3] [4] [5] [7][6]
Início
tamanho = 5
Vetor, Array, Lista
FIFO
FIFO
First In First Out
FIFO
First In First Out
Primeiro a entrar, primeiro a sair
31.3 32 33.7 34 33.1
[0] [1] [2] [3] [4] [5] [6]
Início
tamanho = 5
Fila
33.7
enfileirar (queue)
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
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
DESAFIO:
SABENDO DO COMPORTAMENTO
DA PILHA E FILA, TENTAR
DESENVOLVER A CLASSE FILA
DIAGRAMA CLASSE FILA
DIAGRAMA CLASSE FILA
USANDO A SUPER CLASSE
CLASSE FILA
public class Fila<T> extends EstruturaEstatica<T>{
public Fila(int capacidade) {
super(capacidade);
}
public Fila() {
super();
}
}
TESTE
Fila<Integer> fila = new Fila<>();
System.out.println(fila.estaVazia());
System.out.println(fila.tamanho());
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
FILAS (QUEUES)
Enfileirar elemento
20
Estrutura de Dados e
Algoritmos com Java
<loiane.training />
FIFO
First In First Out
Primeiro a entrar, primeiro a sair
31.3 32 33.7 34 33.1
[0] [1] [2] [3] [4] [5] [6]
Início
tamanho = 5
Fila
33.7
enfileirar (queue)
ENFILEIRAR (ADICIONAR ELEMENTO)
public void enfileira(T elemento) {
aumentaCapacidade();
elementos[tamanho] = elemento;
tamanho++;
//elementos[tamanho++] = elemento;
}
ENFILEIRAR (ADICIONAR ELEMENTO) - REUSANDO CÓDIGO
public void enfileira(T elemento) {
super.adiciona(elemento);
}
Mesmo código de add
elemento na pilha
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]
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
FILAS (QUEUES)
Espiar início da fila
21
Estrutura de Dados e
Algoritmos com Java
<loiane.training />
31.3 32 33.7 34 33.1
[0] [1] [2] [3] [4] [5] [7][6]
Início
tamanho = 5
Fila
ESPIAR INÍCIO DA FILA (PEEK)
public T espiar(){
if (this.estaVazia()){
return null;
}
return elementos[0];
}
TESTE
Fila<Integer> fila = new Fila<>();
fila.enfileira(3);
fila.enfileira(1);
fila.enfileira(2);
System.out.println(fila.espiar()); //3
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
FILAS (QUEUES)
Desenfileirar Elemento
22
Estrutura de Dados e
Algoritmos com Java
<loiane.training />
FIFO
First In First Out
Primeiro a entrar, primeiro a sair
31.3 32 33.7 34 33.1
[0] [1] [2] [3] [4] [5] [6]
Início
tamanho = 6
Fila
33.7
desenfileirar (dequeue)
DESENFILEIRAR ELEMENTO (DEQUEUE)
public T desenfileira(){
if (this.estaVazia()){
return null;
}
T objetoRemovido = this.elementos[0];
this.remove(0);
return objetoRemovido;
}
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
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
FILAS (QUEUES)
API Java Queue + LinkedList
23
Estrutura de Dados e
Algoritmos com Java
<loiane.training />
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());
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
FILAS (QUEUES)
Filas com prioridade
24
Estrutura de Dados e
Algoritmos com Java
<loiane.training />
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);
}
}
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;
}
}
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);
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
FILAS (QUEUES)
API Java PriorityQueue
25
Estrutura de Dados e
Algoritmos com Java
<loiane.training />
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);
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
EXERCÍCIOS
http://goo.gl/fFQCDD
https://github.com/loiane/estrutura-dados-algoritmos-java
Download código fonte e certificado
Cadastro em:
http://loiane.training
http://loiane.com
facebook.com/loianegroner
twitter.com/loiane
https://github.com/loiane
youtube.com/loianegroner
http://loiane.training

Contenu connexe

Tendances (19)

Python 01
Python 01Python 01
Python 01
 
Python 04
Python 04Python 04
Python 04
 
Python 03
Python 03Python 03
Python 03
 
Sistemas Distribuídos - Aula 04 - Revisão de Java
Sistemas Distribuídos - Aula 04 - Revisão de JavaSistemas Distribuídos - Aula 04 - Revisão de Java
Sistemas Distribuídos - Aula 04 - Revisão de Java
 
Aula 16
Aula 16Aula 16
Aula 16
 
Curso java 03 - métodos e parâmetros
Curso java   03 - métodos e parâmetrosCurso java   03 - métodos e parâmetros
Curso java 03 - métodos e parâmetros
 
Aula 15
Aula 15Aula 15
Aula 15
 
Capítulo 6
Capítulo 6Capítulo 6
Capítulo 6
 
Regras de Produção: o Motor de Inferência JESS
Regras de Produção:o Motor de Inferência JESSRegras de Produção:o Motor de Inferência JESS
Regras de Produção: o Motor de Inferência JESS
 
Aula05
Aula05Aula05
Aula05
 
LINQ - Language Integrated Query
LINQ - Language Integrated QueryLINQ - Language Integrated Query
LINQ - Language Integrated Query
 
Orientação a objetos em Python (compacto)
Orientação a objetos em Python (compacto)Orientação a objetos em Python (compacto)
Orientação a objetos em Python (compacto)
 
Iteráveis e geradores (versão RuPy)
Iteráveis e geradores (versão RuPy)Iteráveis e geradores (versão RuPy)
Iteráveis e geradores (versão RuPy)
 
Java aprendendo linguagem.ppt
Java aprendendo linguagem.pptJava aprendendo linguagem.ppt
Java aprendendo linguagem.ppt
 
Aula 21
Aula 21Aula 21
Aula 21
 
Iteraveis e geradores
Iteraveis e geradoresIteraveis e geradores
Iteraveis e geradores
 
Pged 05
Pged 05Pged 05
Pged 05
 
Pged 04
Pged 04Pged 04
Pged 04
 
Python 05
Python 05Python 05
Python 05
 

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

Estrutura de Dados e Algoritmos com Java #13-18: Pilhas (Stack)
Estrutura de Dados e Algoritmos com Java #13-18: Pilhas (Stack)Estrutura de Dados e Algoritmos com Java #13-18: Pilhas (Stack)
Estrutura de Dados e Algoritmos com Java #13-18: Pilhas (Stack)Loiane Groner
 
Desenvolvendo para WEB com JAVA
Desenvolvendo para WEB com JAVADesenvolvendo para WEB com JAVA
Desenvolvendo para WEB com JAVAWillian Magalhães
 
Aula 01 -_pilhas_e_filas_com_vetores-oop
Aula 01 -_pilhas_e_filas_com_vetores-oopAula 01 -_pilhas_e_filas_com_vetores-oop
Aula 01 -_pilhas_e_filas_com_vetores-oopJean Martina
 
Minicurso: Python em 4 horas - FATEC SCS 2015
Minicurso: Python em 4 horas - FATEC SCS 2015 Minicurso: Python em 4 horas - FATEC SCS 2015
Minicurso: Python em 4 horas - FATEC SCS 2015 Alan Justino da Silva
 
Estrutura de Dados - PILHAS
Estrutura de Dados - PILHASEstrutura de Dados - PILHAS
Estrutura de Dados - PILHASAparicio Junior
 
Programação Desktop: Revisão Core Java
Programação Desktop: Revisão Core JavaProgramação Desktop: Revisão Core Java
Programação Desktop: Revisão Core JavaElaine Cecília Gatto
 
Maratona de Programação com STL
Maratona de Programação com STLMaratona de Programação com STL
Maratona de Programação com STLMarcos Castro
 
Minicurso de Django - Desenvolvimento ágil web com Django e Python
Minicurso de Django - Desenvolvimento ágil web com Django e PythonMinicurso de Django - Desenvolvimento ágil web com Django e Python
Minicurso de Django - Desenvolvimento ágil web com Django e PythonGuilherme Garcia
 
Fundamentos de SQL - Parte 3 de 8
Fundamentos de SQL - Parte 3 de 8Fundamentos de SQL - Parte 3 de 8
Fundamentos de SQL - Parte 3 de 8Emiliano Barbosa
 
[Curso Java Basico - Exceptions] Aula 47: try, catch
[Curso Java Basico - Exceptions] Aula 47: try, catch[Curso Java Basico - Exceptions] Aula 47: try, catch
[Curso Java Basico - Exceptions] Aula 47: try, catchLoiane Groner
 
Aula_02_-_Listas_com_Vetores-OOP_2011_2.ppt
Aula_02_-_Listas_com_Vetores-OOP_2011_2.pptAula_02_-_Listas_com_Vetores-OOP_2011_2.ppt
Aula_02_-_Listas_com_Vetores-OOP_2011_2.pptssuserd654cb1
 
Aula_02_-_Listas_com_Vetores-OOP.ppt
Aula_02_-_Listas_com_Vetores-OOP.pptAula_02_-_Listas_com_Vetores-OOP.ppt
Aula_02_-_Listas_com_Vetores-OOP.pptssuserd654cb1
 
Introdução a estruturas de dados em python
Introdução a estruturas de dados em pythonIntrodução a estruturas de dados em python
Introdução a estruturas de dados em pythonAlvaro Oliveira
 
PHP & Segurança: Blindando Aplicações Web - Rafael Jaques - Tchelinux Bento G...
PHP & Segurança: Blindando Aplicações Web - Rafael Jaques - Tchelinux Bento G...PHP & Segurança: Blindando Aplicações Web - Rafael Jaques - Tchelinux Bento G...
PHP & Segurança: Blindando Aplicações Web - Rafael Jaques - Tchelinux Bento G...Tchelinux
 

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

Estrutura de Dados e Algoritmos com Java #13-18: Pilhas (Stack)
Estrutura de Dados e Algoritmos com Java #13-18: Pilhas (Stack)Estrutura de Dados e Algoritmos com Java #13-18: Pilhas (Stack)
Estrutura de Dados e Algoritmos com Java #13-18: Pilhas (Stack)
 
Desenvolvendo para WEB com JAVA
Desenvolvendo para WEB com JAVADesenvolvendo para WEB com JAVA
Desenvolvendo para WEB com JAVA
 
Aula 01 -_pilhas_e_filas_com_vetores-oop
Aula 01 -_pilhas_e_filas_com_vetores-oopAula 01 -_pilhas_e_filas_com_vetores-oop
Aula 01 -_pilhas_e_filas_com_vetores-oop
 
Pilha e filas
Pilha e filasPilha e filas
Pilha e filas
 
Minicurso: Python em 4 horas - FATEC SCS 2015
Minicurso: Python em 4 horas - FATEC SCS 2015 Minicurso: Python em 4 horas - FATEC SCS 2015
Minicurso: Python em 4 horas - FATEC SCS 2015
 
Estrutura de Dados - PILHAS
Estrutura de Dados - PILHASEstrutura de Dados - PILHAS
Estrutura de Dados - PILHAS
 
Programação Desktop: Revisão Core Java
Programação Desktop: Revisão Core JavaProgramação Desktop: Revisão Core Java
Programação Desktop: Revisão Core Java
 
Maratona de Programação com STL
Maratona de Programação com STLMaratona de Programação com STL
Maratona de Programação com STL
 
Heap Máximo
Heap MáximoHeap Máximo
Heap Máximo
 
Minicurso de Django - Desenvolvimento ágil web com Django e Python
Minicurso de Django - Desenvolvimento ágil web com Django e PythonMinicurso de Django - Desenvolvimento ágil web com Django e Python
Minicurso de Django - Desenvolvimento ágil web com Django e Python
 
Java 07 Entrada Dados
Java 07 Entrada DadosJava 07 Entrada Dados
Java 07 Entrada Dados
 
Fundamentos de SQL - Parte 3 de 8
Fundamentos de SQL - Parte 3 de 8Fundamentos de SQL - Parte 3 de 8
Fundamentos de SQL - Parte 3 de 8
 
[Curso Java Basico - Exceptions] Aula 47: try, catch
[Curso Java Basico - Exceptions] Aula 47: try, catch[Curso Java Basico - Exceptions] Aula 47: try, catch
[Curso Java Basico - Exceptions] Aula 47: try, catch
 
Aula_02_-_Listas_com_Vetores-OOP_2011_2.ppt
Aula_02_-_Listas_com_Vetores-OOP_2011_2.pptAula_02_-_Listas_com_Vetores-OOP_2011_2.ppt
Aula_02_-_Listas_com_Vetores-OOP_2011_2.ppt
 
Aula_02_-_Listas_com_Vetores-OOP.ppt
Aula_02_-_Listas_com_Vetores-OOP.pptAula_02_-_Listas_com_Vetores-OOP.ppt
Aula_02_-_Listas_com_Vetores-OOP.ppt
 
Introdução a estruturas de dados em python
Introdução a estruturas de dados em pythonIntrodução a estruturas de dados em python
Introdução a estruturas de dados em python
 
PHP & Segurança: Blindando Aplicações Web - Rafael Jaques - Tchelinux Bento G...
PHP & Segurança: Blindando Aplicações Web - Rafael Jaques - Tchelinux Bento G...PHP & Segurança: Blindando Aplicações Web - Rafael Jaques - Tchelinux Bento G...
PHP & Segurança: Blindando Aplicações Web - Rafael Jaques - Tchelinux Bento G...
 
Java8
Java8Java8
Java8
 
Aula5
Aula5Aula5
Aula5
 
Python
PythonPython
Python
 

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