Разница между Collator (чувствительным к локали) и compareTo (лексикографически) для сравнения значений String - PullRequest
1 голос
/ 17 января 2012

Я читал об использовании Collator и метода CompareTo в String для сравнения строк. Я не уверен, что реальное различие между ними от чтения API. Когда один предпочитает другому?

API Collator

Сравнение строк API

Ответы [ 2 ]

6 голосов
/ 17 января 2012

В основном, чувствительный к локали означает, что он учитывает используемый язык и может использовать различные веса для сравнения между различными символами.

«Например, в чешском языке« е »и« f »считаются основными отличиями, в то время как «е» и «е» являются вторичными отличиями, «е» и «Е» являются третичными различия и «е» и «е» идентичны. " 1

С лексикографическим сравнением compareTo он просто использует их значения Unicode вместо того, чтобы учитывать эти различные веса.

"Для сравнения строк ровно один раз метод сравнения предоставляет лучшее представление. Однако при сортировке списка строк это как правило, необходимо сравнивать каждую строку несколько раз. В этом В этом случае CollationKeys обеспечивают лучшую производительность. Класс CollationKey преобразует строку в серию битов, которые можно сравнить поразрядно против других CollationKeys. CollationKey создается Collator объект для данной строки. « 1

1 Colator Javadoc

2 голосов
/ 17 января 2012

Повышен из моего комментария (какая половина отвечает на вопрос):

Использование сортировщика. Предположим, у вас есть менеджер контактов для компании, имеющей международные представительства. Предположим, у вас есть автозаполнение с сопоставлением префиксов. Сортировщик может позволить вашим сотрудникам в США найти совпадения в ударных гласных в именах, не вводя акценты.

Используйте «Сравнивать»: когда вас не волнуют ситуации, которые я только что дал.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...