- Implementando a interface Comparable no objeto a ser comparado.
- Implementando um objeto comparador
Para a 1º situação você deve conforme a interface criar um método chamado compareTo, o retorno deste método deve ser um int (primitivo) onde deve conter o valor -1 se o objeto comparado foi menor do que o objeto atual, 0 se objeto for igual e 1 se o objeto for maior.
Para a situação 2 você deve fazer uma classe que implemente a interface Comparable como na situação 1.
para realizar a ordenação você deve utilizar um método estático da API Collections o SORT, este método sobrecarregado tem 2 implementações a primeira você passa a list que contém os seus objetos e ele coloca em ordem, lembrando que para ele fazer isto você deve implementar Comparable, caso contrário ele disparará uma exception, e a outra forma é passar a lista e o objeto comparador, desta forma você pode ordenar os seus objetos.
Mais ai vem um detalhe importante com a qual esta semana me deparei, precisei colocar não um só campo do objeto em ordem, mas sim 5 campos do objeto, como fazer isto? depois de pesquisar encontrei a solução a Apache tem uma API Common Collections e BeanUtil (veja as dependências) estas bibliotecas contém funções comuns e uma delas advinhem só, faz exatamente isto, segue um código de exemplo de ordenação por mais de um campo:
List
sortFields.add(new BeanComparator("nome"));
sortFields.add(new BeanComparator("sobrenome"));
ComparatorChain multiSort = new ComparatorChain(sortFields);
java.util.Collections.sort(clientes,multiSort);
O código acima faz a ordenação das lista de objetos clientes pelos campos nome e sobrenome, facilitando assim a ordenação de objetos.
espero que gostem da dica.
Muito bom e muito util!!! Era o que eu estava precisando!!! Valew!!!
ResponderExcluirperfecto
ResponderExcluir