Ordenação de ArrayList - Ordem Alfabética

2 respostas
M

E ai pessoal…
Estou precisando ordenar um ArrayList em ordem alfabética.
Este ArrayList armazena objetos que possuem o atributo nome, e preciso ordenar por este atributo.
Alguem sabe como fazer?

Agradeço pela ajuda!

2 Respostas

J

Crie um compator (java.util.Comparator) que compare Strings. Se nao me engano, a ordenacao padrao de strings eh por ordem alfabetica. Entao, use Collections.sort().

M

Pessoal, fiz o exemplo ai…
Pra quem precisar agora é só adaptar…
Abraços!

import java.util.*;

class Pessoa implements Comparable {

private String  primeiroNome, ultimoNome;
        public Pessoa(String primeiroNome, String ultimoNome) {
        this.primeiroNome = primeiroNome;
        this.ultimoNome = ultimoNome;        
    }
        
    public String primeiroNome()    {
        return primeiroNome;
    }
    
    public String ultimoNome()     {
        return ultimoNome;
    }
    
    
    public int compareTo(Object o) {
    Pessoa n = (Pessoa)o;
    int ultimaComparacao = ultimoNome.compareTo(n.ultimoNome);
    return (ultimaComparacao != 0 ? ultimaComparacao : primeiroNome.compareTo(n.primeiroNome));
}

}

public class OrdenacaoArrayList {

static final Comparator NOME = new Comparator() {

public int compare(Object o1, Object o2) {

Pessoa n1 = (Pessoa) o1;

Pessoa n2 = (Pessoa) o2;

int primeiraComparacao = n1.primeiroNome().compareTo(n2.primeiroNome());

return (primeiraComparacao != 0 ? primeiraComparacao : n1.ultimoNome().compareTo(n2.ultimoNome()));

}

};
public static void main(String args[]) {

ArrayList dados = new ArrayList();

Pessoa n[] = {  new Pessoa(Marcos, Honório dos Santos),

new Pessoa(José, Tirabassi Júnior),

new Pessoa(Juliana, das Graças dos Santos),

new Pessoa(Honorina, das Graças Santos)

};

dados.add(n[0]);

dados.add(n[1]);

dados.add(n[2]);

dados.add(n[3]);
Collections.sort(dados, NOME);
                Iterator itTeste = dados.iterator();
                while (itTeste.hasNext()) {
                    Pessoa testeNome = (Pessoa) itTeste.next();
                    System.out.println("Nome : " + testeNome.primeiroNome());                        
                }
                   
            }

}

Criado 23 de outubro de 2006
Ultima resposta 24 de out. de 2006
Respostas 2
Participantes 2