Exemplo PriorityQueue

voltar

 
 

package pqtest;

 
 

public class Pessoa implements Comparable {

private int idade;

private String nome;

 
 

public Pessoa(String nome, int idade) {

this.nome = nome;

this.idade = idade;

}

 
 

// este método vem da interface Comparable

// Implementa a ordem natural para esta classe

public int compareTo(Object o) {

if (this.idade > ((Pessoa) o).idade)

return 1;

else if (this.idade == ((Pessoa) o).idade){

return this.nome.compareTo(((Pessoa)o).nome);

}                        

else if (this.idade < ((Pessoa) o).idade)

return -1;

return 0;

}

 
 

@Override

public String toString() {

return this.nome + ” – ” + this.idade + ” anos”;

}

}

 
 

 
 

package pqtest;

 
 

import java.util.PriorityQueue;

import java.util.Comparator;

 
 

public class PriorityQueueTest {

public static class PQSort implements Comparator<Pessoa>{

public int compare(Pessoa o1, Pessoa o2) {

return o2.compareTo(o1);

}

}

public static void main(String args[]) {

Pessoa[] pessoas = { new Pessoa(“Pedro”, 34), new Pessoa(“Flavia”, 32),

new Pessoa(“Lucia”, 58), new Pessoa(“Lorena”, 1),

new Pessoa(“Henrique”, 5), new Pessoa(“Jose”, 67),

new Pessoa(“Juliane”, 32) };

 
 

PriorityQueue<Pessoa> pq1 = new PriorityQueue<Pessoa>();

 
 

for (Pessoa pessoa : pessoas)

pq1.offer(pessoa);

 
 

 
 

 
 

for (int i = 0; i < 7;i++)

System.out.println(pq1.poll());

 
 

// PQSort inverte a ordem

PriorityQueue<Pessoa> pq2 = new PriorityQueue<Pessoa>(10, new PQSort());

 
 

for (Pessoa pessoa: pessoas)

pq2.offer(pessoa);

 
 

System.out.println();

 
 

for (int i = 0; i < 7;i++)

System.out.println(pq2.poll());

}

}

Output:

Lorena – 1 anos

Henrique – 5 anos

Flavia – 32 anos

Juliane – 32 anos

Pedro – 34 anos

Lucia – 58 anos

Jose – 67 anos

 
 

Jose – 67 anos

Lucia – 58 anos

Pedro – 34 anos

Juliane – 32 anos

Flavia – 32 anos

Henrique – 5 anos

Lorena – 1 anos

 
 

Anúncios
Esta entrada foi publicada em Arrays & Colletions com as etiquetas . ligação permanente.

Deixe uma Resposta

Preencha os seus detalhes abaixo ou clique num ícone para iniciar sessão:

Logótipo da WordPress.com

Está a comentar usando a sua conta WordPress.com Terminar Sessão /  Alterar )

Google+ photo

Está a comentar usando a sua conta Google+ Terminar Sessão /  Alterar )

Imagem do Twitter

Está a comentar usando a sua conta Twitter Terminar Sessão /  Alterar )

Facebook photo

Está a comentar usando a sua conta Facebook Terminar Sessão /  Alterar )

Connecting to %s