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?
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?
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.