Ordenação de Strings com Acento

Ao tentar ordenar um ArrayList de objetos por um campo do tipo String, percebi que os textos acentuados não eram corretamente ordenados. A explicação para este fato é o seguinte: na linguagem Java, a ordenação de um texto varia de acordo com o Locale (idioma).

Como o default do Locale é o idioma inglês, onde quase nenhum caractere acentuado existe, as letras acentuadas não são equiparados às respectivas letras sem acento. Desta maneira, como caracteres acentuados têm códigos numéricos superiores aos sem acento, acabam indo parar no final da listagem ordenada.

Para demonstrar a solução deste problema, segue abaixo código fonte que ordena listagem de clientes pelo nome.

Continuar lendo