eu tenho uma classe pessoa que possui nome e idade sendo que
vou digitando nomes e idades depois tenho q ordenar por nome em ordem alfabética, sendo que se tiver nome igual o critério de desempate eh a idade.
classe pessoa
public class Pessoa {
String sNome;
Integer iIdade;
public Pessoa(String sNome, Integer iIdade) {
this.sNome = sNome;
this.iIdade = iIdade;
}
public int compareTo(Object o) {
Pessoa aux=(Pessoa)o;
int resultado = sNome.compareTo(aux.sNome);
if (resultado== 0) resultado = iIdade.compareTo(aux.iIdade);
return resultado;
}
}
classe que tem os metodos para gravar e listar as pessoas
import java.util.ArrayList;
import java.util.Collections;
public class DadosPessoa{
ArrayList aList = new ArrayList();
public void grava(Pessoa p){
aList.add(p);
}
public Pessoa[] lista(){
Collections.sort(aList);//AQUI ACONTECE O ERRO!!!!!!!!
Pessoa[] aux = new Pessoa[aList.size()];
for (int i=0; i < aList.size(); i++){
aux[i] = (Pessoa)aList.get(i);
}
return aux;
}
}
classe que testa
import javax.swing.JOptionPane;
public class TestaPessoa {
public static void main (String args[]){
DadosPessoa dPessoa = new DadosPessoa();
for (int i=0; i < 2; i++){
String sNome = JOptionPane.showInputDialog(null,"Digite o nome: ");
String sIdade = JOptionPane.showInputDialog(null,"Digite a Idade: ");
dPessoa.grava( new Pessoa(sNome, Integer.parseInt(sIdade) ));
}
imprime(dPessoa.lista(),"Teste");
System.exit(0);
}
static void imprime(Pessoa[] pessoas, String sTitle) {
String msg="";
for(int i=0;i<pessoas.length;i++) {
msg += "Nome : "+ pessoas[i].sNome +"\n"+
"Idade: "+ pessoas[i].iIdade+"\n\n";
}
JOptionPane.showMessageDialog(null,msg,sTitle,JOptionPane.INFORMATION_MESSAGE);
}
}
alguém pode me ajudar com o problema q acontece ao dar o SORT?