Spec-Zone .ru
спецификации, руководства, описания, API
|
Правила сопоставления определяют последовательность вида строк. Эти правила меняются в зависимости от локали, потому что различные слова вида естественных языков по-другому. Можно использовать предопределенные правила сопоставления, обеспеченные Collator
class, чтобы сортировать строки независимым от локали способом.
Инстанцировать Collator
class вызывает getInstance
метод. Обычно, Вы создаете a Collator
для значения по умолчанию Locale
, как в следующем примере:
Collator myDefaultCollator = Collator.getInstance();
Можно также определить деталь Locale
когда Вы создаете a Collator
, следующим образом:
Collator myFrenchCollator = Collator.getInstance(Locale.FRENCH);
getInstance
метод возвращает a RuleBasedCollator
, который является конкретным подклассом Collator
. RuleBasedCollator
содержит ряд правил, которые определяют порядок сортировки строк для локали, которую Вы определяете. Эти правила предопределяются для каждой локали. Поскольку правила инкапсулируются в пределах RuleBasedCollator
, Ваша программа не будет нуждаться в специальных подпрограммах, чтобы иметь дело со способом, которым правила сопоставления меняются в зависимости от языка.
Вы вызываете Collator.compare
метод, чтобы выполнить независимое от локали сравнение строк. compare
метод возвращает целое число меньше чем, равный, или больше чем нуль, когда первым строковым параметром являются меньше чем, равный, или больше чем второй строковый параметр. Следующая таблица содержит некоторые демонстрационные звонки Collator.compare
:
Пример | Возвращаемое значение | Объяснение |
---|---|---|
myCollator.compare("abc", "def") |
-1 |
"abc" меньше чем "определение" |
myCollator.compare("rtf", "rtf") |
0 |
две строки равны |
myCollator.compare("xyz", "abc") |
1 |
"xyz" больше чем "abc" |
Вы используете compare
метод, выполняя операции вида. Пример программы вызывают CollatorDemo
использование compare
метод, чтобы сортировать массив английских и французских слов. Эта программа показывает то, что может произойти, когда Вы сортируете тот же самый список слов с двумя различными сортировально-подборочными машинами:
Collator fr_FRCollator = Collator.getInstance(new Locale("fr","FR")); Collator en_USCollator = Collator.getInstance(new Locale("en","US"));
Метод для того, чтобы сортировать, вызванный sortStrings
, может использоваться с любым Collator
. Заметьте что sortStrings
метод вызывает compare
метод:
public static void sortStrings(Collator collator, String[] words) { String tmp; for (int i = 0; i < words.length; i++) { for (int j = i + 1; j < words.length; j++) { if (collator.compare(words[i], words[j]) > 0) { tmp = words[i]; words[i] = words[j]; words[j] = tmp; } } } }
Англичане Collator
сортирует слова следующим образом:
peach péché pêche sin
Согласно правилам сопоставления французского языка, предыдущий список находится в неправильном порядке. Во французском péché должен следовать за pêche в сортированном списке. Французы Collator
сортирует массив слов правильно, следующим образом:
peach pêche péché sin