Tenho um array de pessoas.
Cada pessoa contem atributos como nome, endereço e idade.
presciso ordenar esse array pela idade das pessoas.
Como posso fazer isso?
Implemente a interface Comparable e realize a ordenação através do método: sort da classe: java.util.Arrays.
Abaixo um exemplo completo.
import java.util.Arrays;
public class Pessoa implements Comparable<Pessoa> {
private int idade;
private String endereco;
private String nome;
public Pessoa(int idade, String nome, String endereco) {
super();
this.idade = idade;
this.endereco = endereco;
this.nome = nome;
}
public Pessoa() {
super();
}
@Override
public int compareTo(Pessoa o) {
int thisVal = this.idade;
int anotherVal = o.idade;
return (thisVal < anotherVal ? -1 : (thisVal == anotherVal ? 0 : 1));
}
public static void main(String[] args) {
Pessoa[] ps = { new Pessoa(2, "Sophia", "Rua"),
new Pessoa(3, "Isaque", "Rua"), new Pessoa(1, "Alice", "Rua") };
Arrays.sort(ps);
for (Pessoa p : ps) {
System.out.printf("Nome:%s, idade:%d Endereço: %s\n", p.nome, p.idade, p.endereco);
}
}
public int getIdade() {
return idade;
}
public void setIdade(int idade) {
this.idade = idade;
}
public String getEndereco() {
return endereco;
}
public void setEndereco(String endereco) {
this.endereco = endereco;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
}
Juliana,
Fiz um codigo bem didatico para sua pergunta…
package br.com.daniel.metodosort;
/**
* Classe Pessoa que implementa a interface Comparable
* A classe reescreve o metodo compareTo para o metodo sort()
* ter a idade como o parametro de comparação e ordenação.
*
* @author Daniel
*
*/
public class Pessoa implements Comparable<Pessoa> {
//atributos
private String nome;
private String endereco;
private int idade;
//construtor
public Pessoa(String nome,String endereco,int idade){
this.nome = nome;
this.endereco = endereco;
this.idade = idade;
}
//reescrever o metodo compareTo para o metodo short()
//ter como parametro a idade das pessoas.
public int compareTo(Pessoa pessoa){
if (this.idade>pessoa.idade){
return 1;
}
if (this.idade<pessoa.idade){
return -1;
}else{
return 0;
}
}
//temos que reescrever o metodo toString com as
//informações relevantes das pessoas
public String toString(){
return "\nNome: "+this.nome+"\nIdade: "+this.idade+"\n";
}
}
Agora a clase com o metodo main…
package br.com.daniel.metodosort;
//importar as classes e interfaces necessárias
import java.util.Collections;
import java.util.List;
import java.util.ArrayList;
/**
* Classe com o metodo main() para testarmos o Collections.sort()
*
* @author Daniel
*
*/
public class TesteMetodoSort {
public static void main(String [] args){
//criando os objetos
Pessoa p1 = new Pessoa("pessoa1","Salvador",30);
Pessoa p2 = new Pessoa("pessoa2","São Paulo",23);
Pessoa p3 = new Pessoa("pessoa3","Rio",25);
//Criando um ArrayList
List<Pessoa> lista = new ArrayList<Pessoa>();
//adicionando objetos a lista
lista.add(p1);
lista.add(p2);
lista.add(p3);
//Verificar como está a ordenação (ordem de lançamento).
System.out.println(lista);
//Mudando a ordenação conforme definimos no compareTo
Collections.sort(lista);
//Verificar a nova ordenação
System.out.println(lista);
}
}
tentei explicar ao máximo os principios do código nos comentários…
Qualquer dúvida…
Abraço…