No exemplo da aula foi utilizado o Compare para classificar pelo nome do titular da conta em ordem crescente. Como seria em ordem decrescente?
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
No exemplo da aula foi utilizado o Compare para classificar pelo nome do titular da conta em ordem crescente. Como seria em ordem decrescente?
Oi José, tudo bom?
Você pode inverter o sinal do resultado do seu compare(), que o critério de comparação será invertido. Algo como:
@Override
public int compare(Conta c1, Conta c2) {
String nomeC1 = c1.getTitular().getNome();
String nomeC2 = c2.getTitular().getNome();
return nomeC1.compareTo(nomeC2) * -1;
}Ou, você pode inverter o resultado da lista ao fim da ordenação:
NumeroDaContaComparator comparator = new NumeroDaContaComparator();
TitularDaContaComparator titularComparator = new TitularDaContaComparator();
lista.sort(titularComparator);
Collections.reverse(lista);Ou, você pode apenas inverter a ordem dos objetos sendo comparados:
class TitularDaContaComparator implements Comparator<Conta> {
@Override
public int compare(Conta c1, Conta c2) {
String nomeC1 = c1.getTitular().getNome();
String nomeC2 = c2.getTitular().getNome();
// troca c1 por c2 e c2 por c1
return nomeC2.compareTo(nomeC1);
}
}Existem outras formas além dessas =)
Abraço
Muito obrigado.