O método compareTo(T o) deverá retornar um valor inteiro sendo -1 quando o objeto que chama o método for menor que o objeto comparado , 0 (zero) quando igual e 1 quando o objeto que chama o método for maior que o objeto comparado.
Digamos que temos uma classe Pessoa que tem as variáveis nome e idade e queremos organizar os objetos da classe Pessoa em uma lista em ordem de menor idade para maior idade, para isso nossa classe Pessoa deve implementar a interface Comparable, a sintaxe da interface Compable é public interface Comparable<T>, onde T será o objeto a ser comparado, no nosso caso será Pessoa.
Nossa classe ficará assim:
public class Pessoa implements Comparable<Pessoa>{ }
public class Pessoa implements Comparable<Pessoa>{ private String nome; private int idade; public Pessoa(String nome,int idade){ this.nome = nome; this.idade = idade; } public int getIdade(){ return this.idade; } public void setCpf(int idade){ this.idade = idade; } public String getNome(){ return this.nome; } public void setNome(String nome){ this.nome = nome; } @Override public int compareTo(Pessoa pessoa){ return 0; } }
Agora tudo que devemos fazer é utilizar os atributos da classe para fazermos a ordenação, no nosso exemplo dizemos que nosso método compareTo() deve retornar -1 quando a idade seja inferior a idade do objeto que está sendo comparado, 0 quando a idade for igual a idade do objeto que está sendo comparado e 1 quando a idade for maior.
@Override public int compareTo(Pessoa pessoa){ if( this.getIdade()<pessoa.getIdade() ){ return -1; }else if( this.getIdade()==pessoa.getIdade() ){ return 0; }else{ return 1; } }
Agora vamos criar uma classe para testar nosso exemplo, vamos criar sete objetos da classe Pessoa com nomes e idades variadas, depois vamos adicioná-las em um ArrayList e vamos imprimi-los na tela, depois vamos utilizar o método sort da classe Collections para organizar nossos objetos, pois esse método sort utilizará o método compareTo() de cada objeto pessoa dentro do ArrayList para fazer a ordenação, e depois de ordená-los vamos imprimi-los novamente na tela.
import java.util.ArrayList; import java.util.Collections; public class MainClass { public static void main(String[] args) { Pessoa p1 = new Pessoa("Renan",27); Pessoa p2 = new Pessoa("Maria",15); Pessoa p3 = new Pessoa("Joao",32); Pessoa p4 = new Pessoa("Renata",8); Pessoa p5= new Pessoa("Joseane",18); Pessoa p6 = new Pessoa("Roberto",64); Pessoa p7 = new Pessoa("Mario",18); ArrayList<Pessoa> lista = new ArrayList<Pessoa>(); lista.add(p1); lista.add(p2); lista.add(p3); lista.add(p4); lista.add(p5); lista.add(p6); lista.add(p7); //antes de ordenar por idade System.out.println("Lista desordenada"); for(Pessoa p: lista){ System.out.println("Nome: "+p.getNome()+" idade: "+p.getIdade()); } Collections.sort(lista); System.out.println(""); //depois de ordenar System.out.println("Lista ordenada por idade"); for(Pessoa p: lista){ System.out.println("Nome: "+p.getNome()+" idade: "+p.getIdade()); } } }
Lista desordenada
Nome: Renan idade: 27
Nome: Maria idade: 15
Nome: Joao idade: 32
Nome: Renata idade: 8
Nome: Joseane idade: 18
Nome: Roberto idade: 64
Nome: Mario idade: 18
Lista ordenada por idade
Nome: Renata idade: 8
Nome: Maria idade: 15
Nome: Joseane idade: 18
Nome: Mario idade: 18
Nome: Renan idade: 27
Nome: Joao idade: 32
Nome: Roberto idade: 64
Aqui encerro esse artigo! Espero ter ajudado!
Nenhum comentário:
Postar um comentário