No exemplo da aula foi utilizado o Compare para classificar pelo nome do titular da conta em ordem crescente. Como seria em ordem decrescente?
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.