Я думаю, вы должны использовать класс Collator. Он позволяет установить силу и локаль, и он будет сравнивать символы соответственно.
С Java 1.6 API:
Вы можете установить подборщик в свойство силы определить уровень разницы считается значимым в сравнениях. Четыре достоинства: : PRIMARY, SECONDARY, TERTIARY и IDENTICAL. Точные назначение сильных сторон языку функции зависят от локали. Для пример, на чешском языке, «e» и «f» являются , считаются основными отличиями, а «e» и «ě» являются вторичными отличиями, «e» и «E» являются третичными отличиями и «e» и «e» идентичны.
Я думаю, важный момент (который люди пытаются сделать), что «Жоао» и «João» никогда не должны рассматриваться как равные, но если вы делаете сортировку вы не хотите, чтобы они были по сравнению с их значением ASCII, потому что тогда у вас будет что-то вроде Joao, John, João, что плохо. Использование класса collator определенно правильно справляется с этим.
, но это __NOT__ равно, почему вы хотите, чтобы они были равны, когда они не являются? –
@fuzzy оба имеют одно и то же имя (это португальская версия для Джона).Некоторые люди просто ленивы, чтобы включить акценты –
На испанском языке n и - считаются разными буквами. –