Oi javapaulomg,
Vc tem dois possiveis caminhos para realizar essa ordenacao. Um deles seria a classe Pessoa implementar a interface Comparable e para isso seria necessario criar o metodo compareTo que iria conter a logica de ordenacao que vc deseja. Outro caminho seria implementar um Comparator para a classe pessoa sendo que esse Comparator teria um metodo que receberia dois objetos retornando o resultado da comparacao entre ambos.
Acredito que implementar o Comparator seja mais interessante porque desta forma vc mantem a classe Pessoa mais simples alem de ser possivel implementar mais de um Comparator para que seja possivel realizar a ordenacao de formas diferentes.
Apos implementar o Comparator basta fazer uma chamada ao metodo sort da classe Collection passando o conjunto de dados que vc deseja ordenar e o Comparator a ser utilizado para que o seu conjunto seja ordenado.
Abaixo segue um exemplo do que foi explicado anteriormente:
[code]import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
public class TesteOrdena {
public static void main(String[] args) {
ArrayList conj = new ArrayList();
Pessoa p1 = new Pessoa(1,"Aaaa","Rua A");
conj.add(p1);
p1 = new Pessoa(2,"Bbbb","Rua B");
conj.add(p1);
p1 = new Pessoa(5,"Dddd","Rua D");
conj.add(p1);
p1 = new Pessoa(3,"Dddd","Rua D");
conj.add(p1);
p1 = new Pessoa(4,"Dddd","Rua D");
conj.add(p1);
p1 = new Pessoa(7,"Hhhh","Rua H");
conj.add(p1);
p1 = new Pessoa(6,"Hhhh","Rua H");
conj.add(p1);
p1 = new Pessoa(8,"Zaaa","Rua Z");
conj.add(p1);
p1 = new Pessoa(9,"Zzzz","Rua Z");
conj.add(p1);
for (int i = 0; i < conj.size(); i++) {
System.out.println("Codigo = "+((Pessoa)conj.get(i)).getCodigo()+
" | Nome = "+((Pessoa)conj.get(i)).getNome());
}
Collections.sort(conj, new PessoaComparator());
System.out.println("\r\nDepois da ordenação.....\r\n");
for (int i = 0; i < conj.size(); i++) {
System.out.println("Codigo = "+((Pessoa)conj.get(i)).getCodigo()+
" | Nome = "+((Pessoa)conj.get(i)).getNome());
}
}
}
class Pessoa {
private int codigo;
private String nome;
private String endereco;
public Pessoa(int cod, String nom, String end) {
this.codigo = cod;
this.nome = nom;
this.endereco = end;
}
public int getCodigo() {
return codigo;
}
public void setCodigo(int codigo) {
this.codigo = codigo;
}
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;
}
}
class PessoaComparator implements Comparator {
public int compare(Object p1, Object p2)
throws ClassCastException {
if (!(p1 instanceof Pessoa) || !(p2 instanceof Pessoa))
throw new ClassCastException(“Objetos do tipo Pessoa esperados!”);
Pessoa pes1 = (Pessoa)p1;
Pessoa pes2 = (Pessoa)p2;
int comp = pes1.getNome().compareTo(pes2.getNome());
if (comp < 0) {
comp = 1;
} else if (comp > 0) {
comp = -1;
} else {
if (pes1.getCodigo() == pes2.getCodigo()) {
comp = 0;
} else if (pes1.getCodigo() > pes2.getCodigo()) {
comp = 1;
} else {
comp = -1;
}
}
return comp;
}
}
[/code]
Acredito que isso resolva o seu problema.