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: 2592 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 |
Python - Como converter Centímetros Cúbicos em Metros Cúbicos em Python - Python para Física e Engenharia |
E-Books em PDF |
||||
|
||||
|
||||
Linguagens Mais Populares |
||||
1º lugar: Java |