![]() |
|
Código-Fonte Software de Gestão Financeira com código fonte em PHP, MySQL, Bootstrap, jQuery - Inclui cadastro de clientes, fornecedores e ticket de atendimentoDiga 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 |
|
Você está aqui: Java ::: Pacote java.util ::: Comparator |
Como escrever uma classe que implementa a interface Comparator para controlar a ordenação dos elementos de uma coleçãoQuantidade de visualizações: 2783 vezes |
Nesta dica eu mostro como escrever uma classe que implementa a interface Comparator para controlar a ordenação dos elementos de uma coleção. No exemplo mostro também como usar constantes para definir a forma de ordenação. Vamos começar criando uma classe Livro. Veja o código:
package estudos;
public class Livro{
// para simplificar o exemplo não usarei encapsulamento de dados
String titulo;
int paginas;
// construtor não padrão
public Livro(String titulo, int paginas){
this.titulo = titulo;
this.paginas = paginas;
}
}
Agora vamos criar a classe que implementará a interface Comparator:
package estudos;
import java.util.Comparator;
public class OrdenacaoLivros implements Comparator<Livro>{
// constantes que permitem definir o tipo de ordenação a ser realizada
public final static int TITULO = 1;
public final static int PAGINAS = 2;
private int tipoOrdenacao; // guarda o tipo da ordenação desejada
public OrdenacaoLivros(int tipoOrdenacao){
this.tipoOrdenacao = tipoOrdenacao;
}
// sobrescreve o método compare() e faz a ordenação de acordo com o critério desejado
@Override
public int compare(Livro a, Livro b){
// ordenação por páginas?
if(this.tipoOrdenacao == OrdenacaoLivros.PAGINAS){
return a.paginas - b.paginas;
}
// ordenação por título?
else if(this.tipoOrdenacao == OrdenacaoLivros.TITULO){
return a.titulo.compareTo(b.titulo);
}
else{
// ordenação desconhecida
System.out.println("Ordenação desconhecida");
return 0;
}
}
}
Note que o método compare() testa o tipo de ordenação para classificar os livros de acordo com o número de páginas ou ordem alfabética do título. Finalmente, veja o código para a classe principal da aplicação:
package estudos;
import java.util.ArrayList;
import java.util.Collections;
public class Estudos{
public static void main(String[] args) {
// vamos criar uma ArrayList de objetos da classe Livro
ArrayList<Livro> livros = new ArrayList();
livros.add(new Livro("Programando em Java", 259));
livros.add(new Livro("A Bíblia do Delphi", 1043));
livros.add(new Livro("Aprenda PHP e MySQL", 127));
livros.add(new Livro("Tutorial Básico de JSF", 41));
// vamos ordenar os elementos do ArrayList usando o método sort() da classe Collectons
// e fornecendo um objeto OrdenacaoLivros com o critério de ordenação por páginas
Collections.sort(livros, new OrdenacaoLivros(OrdenacaoLivros.PAGINAS));
// vamos percorrer e exibir os valores dos elementos ordenados por quantidade de página
for(Livro livro : livros){
System.out.println("Título: " + livro.titulo + "; Páginas: " + livro.paginas);
}
// vamos ordenar os elementos do ArrayList usando o método sort() da classe Collectons
// e fornecendo um objeto OrdenacaoLivros com o critério de ordenação por título
Collections.sort(livros, new OrdenacaoLivros(OrdenacaoLivros.TITULO));
// vamos percorrer e exibir os valores dos elementos ordenados por título
System.out.println();
for(Livro livro : livros){
System.out.println("Título: " + livro.titulo + "; Páginas: " + livro.paginas);
}
}
}
Ao executarmos este exemplo nós teremos o seguinte resultado: Título: Tutorial Básico de JSF; Páginas: 41 Título: Aprenda PHP e MySQL; Páginas: 127 Título: Programando em Java; Páginas: 259 Título: A Bíblia do Delphi; Páginas: 1043 Título: A Bíblia do Delphi; Páginas: 1043 Título: Aprenda PHP e MySQL; Páginas: 127 Título: Programando em Java; Páginas: 259 Título: Tutorial Básico de JSF; Páginas: 41 |
|
|
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 |
||||
|
||||
|
||||
Linguagens Mais Populares |
||||
|
1º lugar: Java |







