2
respostas

[Dúvida] Foi notado que fazer o método compareTo

Porque esse método diferencia o ordenamento de ordem alfabética entre maiúscula e minúscula? Na minha lista tem: em ordem declarada valores: O podereoso Chefão, Avatar Dogville e lost:

Daí na saída de impressão o lost não fica em ordem alfabética, mas quando troco lost para Lost, ele passa a ficar em ordem alfabética.

2 respostas

Oi Fabricio! Tudo bem?

A questão que você levantou sobre o método compareTo e a diferença de ordenação entre letras maiúsculas e minúsculas é bem interessante. O que acontece é que, por padrão, o método compareTo em Java diferencia letras maiúsculas de minúsculas. Isso significa que, na ordem lexicográfica padrão, todas as letras maiúsculas vêm antes das letras minúsculas. Por isso, "Lost" aparece antes de "O poderoso chefão", mas "lost" não.

Se você deseja que a ordenação não faça distinção entre maiúsculas e minúsculas, uma solução é usar o método compareToIgnoreCase em vez de compareTo. Esse método ignora as diferenças de maiúsculas e minúsculas ao comparar strings. Aqui está um exemplo de como você poderia usá-lo:

@Override
public int compareTo(Titulo outroTitulo) {
    return this.getNome().compareToIgnoreCase(outroTitulo.getNome());
}

Com essa alteração, tanto "Lost" quanto "lost" seriam tratados da mesma forma na ordenação.

Bons estudos!

Muito obrigado, irei implementar meu código com essa informação. Abraço.