Я думаю, вы должны использовать класс Collator . Он позволяет вам установить силу и локаль, и он будет соответствующим образом сравнивать символы.
Из API Java 1.6:
Вы можете установить силу Collator
свойство определять уровень
разница считается значительной в
сравнения. Четыре сильные стороны
при условии: ПЕРВИЧНЫЙ, ВТОРИЧНЫЙ,
ТРЕТИЙНЫЙ И ИДЕНТИЧНЫЙ. Точный
назначение сильных сторон языку
особенности зависят от локали. За
Например, на чешском языке, «е» и «F» являются
считаются основными отличиями, в то время как
«е» и «е» вторичные различия,
«е» и «е» - третичные различия
и «е» и «е» идентичны.
Я думаю, что важный момент (который пытаются сделать люди) заключается в том, что «Жуан» и «Жуан» никогда не следует рассматривать как равные, но если вы делаете сортировку, вы не хотите, чтобы их сравнивали на основе их значение ASCII, потому что тогда у вас будет что-то вроде Joao, John, João, что не очень хорошо. Использование класса collator определенно обрабатывает это правильно.