Spec-Zone .ru
спецификации, руководства, описания, API
|
Сортировка длинных списков строк является часто трудоёмкой. Если Ваш алгоритм вида неоднократно сравнивает строки, можно ускорить процесс при использовании CollationKey
class.
A CollationKey
объект представляет ключ сортировки для данного String
и Collator
. Сравнение два CollationKey
объекты включают поразрядное сравнение ключей сортировки и быстрее чем сравнение String
объекты с Collator.compare
метод. Однако, генерирование CollationKey
объекты требуют времени. Поэтому, если a String
должен быть сравнен только однажды, Collator.compare
предложения лучшая производительность.
Пример, который следует за использованием a CollationKey
возразите, чтобы сортировать массив слов. Исходный код для этого примера находится в KeysDemo.java
.
KeysDemo
программа создает массив CollationKey
объекты в main
метод. Создать a CollationKey
, Вы вызываете getCollationKey
метод на a Collator
объект. Невозможно сравниться два CollationKey
объекты, если они не происходят из того же самого Collator
. main
метод следующие:
static public void main(String[] args) { Collator enUSCollator = Collator.getInstance(new Locale("en","US")); String [] words = { "peach", "apricot", "grape", "lemon" }; CollationKey[] keys = new CollationKey[words.length]; for (int k = 0; k < keys.length; k ++) { keys[k] = enUSCollator. getCollationKey(words[k]); } sortArray(keys); printArray(keys); }
sortArray
метод вызывает CollationKey.compareTo
метод. compareTo
метод возвращает целое число меньше чем, равный, или больше чем нуль если keys[i]
объект является меньше чем, равный, или больше чем keys[j]
объект. Отметьте, что программа сравнивается CollationKey
объекты, не String
объекты от исходного массива слов. Вот код для sortArray
метод:
public static void sortArray(CollationKey[] keys) { CollationKey tmp; for (int i = 0; i < keys.length; i++) { for (int j = i + 1; j < keys.length; j++) { if (keys[i].compareTo(keys[j]) > 0) { tmp = keys[i]; keys[i] = keys[j]; keys[j] = tmp; } } } }
KeysDemo
программа сортирует массив CollationKey
объекты, но исходная цель должен был сортировать массив String
объекты. Получать String
представление каждого CollationKey
, программа вызывает getSourceString
в displayWords
метод, следующим образом:
static void displayWords(CollationKey[] keys) { for (int i = 0; i < keys.length; i++) { System.out.println(keys[i].getSourceString()); } }
displayWords
метод печатает следующие строки:
apricot grape lemon peach