eu tenho uma classe usuario que implementa a interface Comparable, na classe usuario tem os elementos nome e idade.
eu criei alguns objeto da classe usuarios e adicionei a um collection, eu crie tambem um Iterator para imprimir todos elementos, ate ai td bem, só que ele imprime ordenado pela idade e eu queria pelo nome, alguem sabe como eu posso fazer isso? eu estou usando o TreeSet
eu tenho uma classe usuario que implementa a interface Comparable, na classe usuario tem os elementos nome e idade.
eu criei alguns objeto da classe usuarios e adicionei a um collection, eu crie tambem um Iterator para imprimir todos elementos, ate ai td bem, só que ele imprime ordenado pela idade e eu queria pelo nome, alguem sabe como eu posso fazer isso? eu estou usando o TreeSet
Se vc implementou compareTo com base na idade então é assim que ele apresentará. Só que usuário não é um objeto comparável (não existe um ordem intrinseca a Usuário. Não é como um numero que tem um ordem intrinseca) por isso deve ser implementado um Comparator e ai vc pode criar vários comparators cada um com sua regra de comparação.
Z
zorro
eu nao to conseguindo criar um compareTo para o nome
No código acima, estou pegando o nome do objeto do qual o método compareTo() foi chamado e comparando com o nome do objeto a ser comparado. Será retornado o resultado da comparação dessas duas Strings, e isso fará com que eles sejam corretamente ordenados no TreeSet.
Z
zorro
obriago funcionou, so q o tipo de retorno tem q continuar sendo int, senao da incompatible type, + obrigado vc ajudou bastante.
o codigo ficou assim
public int compareTo(Object obj) {
Usuario user = (Usuario) obj;
return this.nome.compareTo(user.nome);
}
felipealbuquerque
Ops! Falta de atenção minha, perdão… hehe! :lol:
sergiotaborda
zorro:
eu nao to conseguindo criar um compareTo para o nome
Essa não é a forma de implementar comparable. Comparable (comparável) significa que A é comparado com B
Se A é maior que B retorna um numero positivo, se A é mneor que B retorna um numero negativo. Se são iguais retorna 0.
Por isso que o retorno é sempre int.