Ainda não tem acesso? Estude com a gente! Matricule-se
Ainda não tem acesso? Estude com a gente! Matricule-se

Collections

quando faco um ArrayList de nomes, posso usar um

Collections.sort(nomes)

para ordenar os nomes. e se for um array de objetos, como posso ordenar?

7 respostas

Boa tarde, Leonardo! Como vai?

Vc pode ver na documentação da classe Collections que há uma sobrecarga do método sort() onde vc pode passar uma coleção a ser ordenada e um Comparator para servir como regra de ordenação.

Vc já usou um Comparator alguma vez? Se não souber como ele funciona é só dizer que eu te explico aqui...

nao, ja vi a aula que fala sobre comparator mas ainda nao usei. e eu ainda acho meio confuso usar a documentacao...rsrs

Primeiro você deve escolher entre usar o Comparable ou Comparator. Depois decidir como comparar, vou dar o exemplo do Comparable para ordenar uma classe Pessoa pela idade.

Comparable:

class Pessoa implements Comparable{
    //resto da classe omitida

    @Override
    public int compareTo(Object o) {
            idadeComparada = ((Pessoa) o).getIdade();
            return this.getIdade() - idadeComparada;
    }
}

Aqui você está implementando a interface Comparable e sobrescrevendo o método responsável por comparar seu objeto com outro. Neste caso escolhemos a idade usando o getIdade().

O método compareTo retorna um int: se for negativo quer dizer que o objeto é menor, se for 0 igual, e positivo maior.

Agora você pode usar o Collections.sort(listaDePessoasAqui).

Sim. A documentação é confusa no começo. Porem quando dominar ela tu vai melhorar ate o seu jeito de programar. Eles poderia ter uma aula de como ler uma documentação.

concordo, pra quem ta no inicio fica muito confuso procurar classes, implementacoes e tal...e saber como usar

Leonardo, vou fazer o seguinte então! Vou deixar pendente aqui uma resposta minha onde eu vou te dar um caminho das pedras para vc conseguir aproveitar melhor a documentação e tbm vou te mostrar como se faz pra ordenar a lista do modo como vc quer!

Estou mandando essa resposta só pra vc ficar tranquilo que eu não esqueci do tópico! Só estou com o tempo meio corrido agora e não vou conseguir elaborar uma resposta da forma como tem que ser!

Mas aguarde que eu volto!

Grande abraço e até lá!

Também quero essa dica de aproveitar melhor a documentação.