Класс Collator
- java.lang.Object
-
- java.text.Collator
- Все реализованные интерфейсы:
- Cloneable, Comparator<Object>
- Прямые известные подклассы:
- RuleBasedCollator
public abstract class Collator extends Object implements Comparator<Object>, Cloneable
Класс Collator выполняет чувствительные к региону сравнения String. Вы используете этот класс для построения поисковых и сортировочных процедур для текста естественного языка.
Collator является абстрактным базовым классом. Подклассы реализуют конкретные стратегии сортировки. Один подкласс, RuleBasedCollator, в настоящее время предоставляется платформой Java и применим к широкому спектру языков. Другие подклассы могут быть созданы для удовлетворения более специализированных потребностей.
Как и другие классы, чувствительные к региону, вы можете использовать статический фабричный метод getInstance, чтобы получить соответствующий объект Collator для заданного региона. Вам нужно будет обратить внимание только на подклассы Collator только если вам необходимо понять детали конкретной стратегии сортировки или если вам необходимо изменить эту стратегию.
Следующий пример демонстрирует, как сравнить две строки, используя Collator для локального региона по умолчанию.
// Compare two strings in the default locale
Collator myCollator = Collator.getInstance();
if( myCollator.compare("abc", "ABC") < 0 )
System.out.println("abc is less than ABC");
else
System.out.println("abc is greater than or equal to ABC"); Вы можете установить свойство силы Collator для определения уровня различий, считающегося значимым в сравнениях. Предоставляется четыре уровня силы: PRIMARY, SECONDARY, TERTIARY, и IDENTICAL. Точное назначение уровней силы языковым особенностям зависит от региона. Например, в чешском языке "e" и "f" считаются первичными различиями, в то время как "e" и "ě" — вторичными различиями, "e" и "E" — третичными различиями, а "e" и "e" — идентичными. Следующее показывает, как можно игнорировать регистр и ударения для английского США.
//Get the Collator for US English and set its strength to PRIMARY
Collator usCollator = Collator.getInstance(Locale.US);
usCollator.setStrength(Collator.PRIMARY);
if( usCollator.compare("abc", "ABC") == 0 ) {
System.out.println("Strings are equivalent");
} Для сравнения String ровно один раз метод compare обеспечивает наилучшую производительность. Однако при сортировке списка String обычно необходимо сравнивать каждый String несколько раз. В этом случае CollationKey обеспечивают лучшую производительность. Класс CollationKey преобразует String в серию битов, которые могут быть сравнены побитово с другими CollationKey. CollationKey создается объектом Collator для заданного String.
Примечание: CollationKey из разных Collator сравнить нельзя. См. описание класса CollationKey для примера использования CollationKey.
- См. также:
-
RuleBasedCollator,CollationKey,CollationElementIterator,Locale
Поля
| Модификатор и тип | Поле и описание |
|---|---|
static int |
CANONICAL_DECOMPOSITION Значение режима разложения. |
static int |
FULL_DECOMPOSITION Значение режима разложения. |
static int |
IDENTICAL Значение силы сортировки. |
static int |
NO_DECOMPOSITION Значение режима разложения. |
static int |
PRIMARY Значение силы сортировки. |
static int |
SECONDARY Значение силы сортировки. |
static int |
TERTIARY Значение силы сортировки. |
Конструкторы
| Модификатор | Конструктор и описание |
|---|---|
protected |
Collator() Конструктор по умолчанию. |
Методы
| Модификатор и тип | Метод и описание |
|---|---|
Object |
clone() Переопределяет Cloneable |
int |
compare(Object o1,
Object o2) Сравнивает два аргумента для определения порядка. |
abstract int |
compare(String source,
String target) Сравнивает исходную строку с целевой строкой в соответствии с правилами сортировки для этого Collator. |
boolean |
equals(Object that) Сравнивает равенство двух Collator. |
boolean |
equals(String source,
String target) Удобный метод для сравнения равенства двух строк на основе правил сортировки этого Collator. |
static Locale[] |
getAvailableLocales() Возвращает массив всех локалей, для которых методы |
abstract CollationKey |
getCollationKey(String source) Преобразует строку в серию битов, которые можно сравнивать побитово с другими CollationKeys. |
int |
getDecomposition() Получить режим разложения этого Collator. |
static Collator |
getInstance() Получить Collator для текущего локального региона по умолчанию. |
static Collator |
getInstance(Locale desiredLocale) Получить Collator для требуемого локального региона. |
int |
getStrength() Возвращает свойство силы этого Collator. |
abstract int |
hashCode() Генерирует хэш-код для этого Collator. |
void |
setDecomposition(int decompositionMode) Установить режим разложения этого Collator. |
void |
setStrength(int newStrength) Устанавливает свойство силы этого Collator. |
Методы, унаследованные от класса java.lang.Object
finalize, getClass, notify, notifyAll, toString, wait, wait, wait Методы, унаследованные от интерфейса java.util.Comparator
comparing, comparing, comparingDouble, comparingInt, comparingLong, naturalOrder, nullsFirst, nullsLast, reversed, reverseOrder, thenComparing, thenComparing, thenComparing, thenComparingDouble, thenComparingInt, thenComparingLong Поля
PRIMARY
public static final int PRIMARY
Значение силы сортировки. При установке учитываются только различия PRIMARY при сравнении. Присвоение силы языковым функциям зависит от локали. Типичный пример — разные базовые буквы ("a" и "b") считаются различиями PRIMARY.
- См. также:
-
setStrength(int),getStrength(), Значения постоянных полей
SECONDARY
public static final int SECONDARY
Значение силы сортировки. При установке учитываются только различия SECONDARY и выше при сравнении. Присвоение силы языковым функциям зависит от локали. Типичный пример — разные акцентированные формы одной и той же базовой буквы ("a" и "ä") считаются различиями SECONDARY.
- См. также:
-
setStrength(int),getStrength(), Значения постоянных полей
TERTIARY
public static final int TERTIARY
Значение силы сортировки. При установке учитываются только различия TERTIARY и выше при сравнении. Присвоение силы языковым функциям зависит от локали. Типичный пример — различия в регистре ("a" и "A") считаются различиями TERTIARY.
- См. также:
-
setStrength(int),getStrength(), Значения постоянных полей
IDENTICAL
public static final int IDENTICAL
Значение силы сортировки. При установке все различия считаются значимыми при сравнении. Присвоение сил языковым функциям зависит от локали. Типичный пример — управляющие символы ("\u0001" и "\u0002") считаются одинаковыми на уровнях PRIMARY, SECONDARY и TERTIARY, но разными на уровне IDENTICAL. Кроме того, различия между предварительно составленными акцентами, такими как "\u00C0" (A-grave), и комбинирующими акцентами, такими как "A\u0300" (A, объединяющий grave), будут считаться значимыми на уровне IDENTICAL, если разложение установлено в NO_DECOMPOSITION.
- См. также:
- Значения постоянных полей
NO_DECOMPOSITION
public static final int NO_DECOMPOSITION
Значение режима разложения. При установке NO_DECOMPOSITION акцентированные символы не будут разлагаться для сортировки. Это значение по умолчанию и обеспечивает самую быструю сортировку, но верные результаты будут получены только для языков, которые не используют акценты.
CANONICAL_DECOMPOSITION
public static final int CANONICAL_DECOMPOSITION
Значение режима разложения. При установке CANONICAL_DECOMPOSITION символы, являющиеся каноническими вариантами в соответствии со стандартом Unicode, будут разлагаться для сортировки. Это необходимо для правильной сортировки акцентированных символов.
CANONICAL_DECOMPOSITION соответствует форме нормализации D, как описано в Unicode Technical Report #15.
FULL_DECOMPOSITION
public static final int FULL_DECOMPOSITION
Значение режима разложения. При установке FULL_DECOMPOSITION будут разлагаться как канонические, так и совместимые варианты Unicode для сортировки. Это не только приводит к сортировке акцентированных символов, но и символов, имеющих специальные форматы, с их нормальной формой. Например, символы ASCII и катаканы с половинной и полной шириной сортируются вместе. FULL_DECOMPOSITION — самый полный, а значит и самый медленный режим разложения.
FULL_DECOMPOSITION соответствует форме нормализации KD, как описано в Unicode Technical Report #15.
Конструкторы
Collator
protected Collator()
Конструктор по умолчанию. Этот конструктор защищён, чтобы подклассы могли к нему обратиться. Пользователи обычно создают подкласс Collator, вызывая фабричный метод getInstance.
- См. также:
getInstance()
Методы
getInstance
public static Collator getInstance()
Получает Collator для текущей локали по умолчанию. Текущая локаль определяется java.util.Locale.getDefault.
- Возвращает:
- Collator для локали по умолчанию (например, en_US).
- См. также:
Locale.getDefault()
getInstance
public static Collator getInstance(Locale desiredLocale)
Получает Collator для указанной локали.
- Параметры:
-
desiredLocale- желаемая локаль. - Возвращает:
- Collator для указанной локали.
- См. также:
-
Locale,ResourceBundle
compare
public abstract int compare(String source,
String target) Сравнивает строку-источник со строкой-целью по правилам сортировки данного Collator. Возвращает целое число меньше, равно или больше нуля в зависимости от того, меньше, равна или больше строка-источник строки-цели. См. описание класса Collator для примера использования.
Для однократного сравнения этот метод имеет наилучшую производительность. Если заданная строка будет участвовать в нескольких сравнениях, метод CollationKey.compareTo имеет наилучшую производительность. См. описание класса Collator для примера использования CollationKeys.
- Параметры:
-
source- строка-источник. -
target- строка-цель. - Возвращает:
- Целое значение. Меньше нуля, если источник меньше цели, равно нулю, если источник и цель равны, больше нуля, если источник больше цели.
- См. также:
-
CollationKey,getCollationKey(java.lang.String)
compare
public int compare(Object o1,
Object o2) Сравнивает два аргумента по порядку. Возвращает отрицательное целое число, ноль или положительное целое число, если первый аргумент меньше, равен или больше второго.
Это реализация просто возвращает compare((String)o1, (String)o2) .
- Установлено:
-
compareв интерфейсеComparator<Object> - Параметры:
-
o1- первый сравниваемый объект. -
o2- второй сравниваемый объект. - Возвращает:
- отрицательное целое число, ноль или положительное целое число, если первый аргумент меньше, равен или больше второго.
- Исключения:
-
ClassCastException- аргументы нельзя привести к строкам. - С тех пор:
- 1.2
- См. также:
Comparator
getCollationKey
public abstract CollationKey getCollationKey(String source)
Преобразует строку в последовательность битов, которые можно сравнивать побитово с другими CollationKeys. CollationKeys обеспечивают лучшую производительность, чем Collator.compare, когда строки участвуют в нескольких сравнениях. См. описание класса Collator для примера использования CollationKeys.
- Параметры:
-
source- строка, которая должна быть преобразована в ключ сортировки. - Возвращает:
- CollationKey для данной строки, основанный на правилах сортировки данного Collator. Если строка-источник null, возвращается null CollationKey.
- См. также:
-
CollationKey,compare(java.lang.String, java.lang.String)
equals
public boolean equals(String source,
String target) Удобный метод для сравнения равенства двух строк на основе правил сортировки этого Collator.
- Параметры:
-
source- строка-источник для сравнения. -
target- строка-цель для сравнения. - Возвращает:
- true, если строки равны согласно правилам сортировки. false, в противном случае.
- См. также:
compare(java.lang.String, java.lang.String)
getStrength
public int getStrength()
Возвращает свойство силы данного Collator. Свойство силы определяет минимальный уровень различий, считаемый значимым при сравнении. См. описание класса Collator для примера использования.
- Возвращает:
- текущее свойство силы данного Collator.
- См. также:
-
setStrength(int),PRIMARY,SECONDARY,TERTIARY,IDENTICAL
setStrength
public void setStrength(int newStrength)
Устанавливает свойство силы данного Collator. Свойство силы определяет минимальный уровень различий, считаемый значимым при сравнении. См. описание класса Collator для примера использования.
- Параметры:
-
newStrength- новое значение силы. - Исключения:
-
IllegalArgumentException- если новое значение силы не является одним из PRIMARY, SECONDARY, TERTIARY или IDENTICAL. - См. также:
-
getStrength(),PRIMARY,SECONDARY,TERTIARY,IDENTICAL
getDecomposition
public int getDecomposition()
Получить режим разложения этого Collator. Режим разложения определяет, как обрабатываются составные символы Юникода. Настройка режима разложения позволяет пользователю выбрать между более быстрым и более полным поведением сортировки.
Три значения для режима разложения:
- NO_DECOMPOSITION,
- CANONICAL_DECOMPOSITION
- FULL_DECOMPOSITION.
- Возвращает:
- режим разложения
- См. также:
-
setDecomposition(int),NO_DECOMPOSITION,CANONICAL_DECOMPOSITION,FULL_DECOMPOSITION
setDecomposition
public void setDecomposition(int decompositionMode)
Установить режим разложения этого Collator. См. getDecomposition для описания режима разложения.
- Параметры:
-
decompositionMode- новый режим разложения. - Исключения:
-
IllegalArgumentException- Если заданное значение не является допустимым режимом разложения. - См. также:
-
getDecomposition(),NO_DECOMPOSITION,CANONICAL_DECOMPOSITION,FULL_DECOMPOSITION
getAvailableLocales
public static Locale[] getAvailableLocales()
Возвращает массив всех локалей, для которых методы этого класса могут вернуть локализованные экземпляры. Возвращаемый массив представляет собой объединение локалей, поддерживаемых Java-средой выполнения и установленных реализациями CollatorProvider. Он должен содержать по крайней мере экземпляр Locale, равный Locale.US.
- Возвращает:
- Массив локалей, для которых доступны локализованные
Collatorэкземпляры.
clone
public Object clone()
Переопределяет Cloneable
equals
public boolean equals(Object that)
Сравнивает равенство двух Collator.
- Задано в:
-
equalsв интерфейсеComparator<Object> - Переопределяет:
-
equalsв классеObject - Параметры:
-
that- Collator для сравнения с этим. - Возвращает:
- true, если этот Collator такой же, как и Collator; false в противном случае.
- См. также:
-
Object.hashCode(),HashMap
hashCode
public abstract int hashCode()
Генерирует хэш-код для этого Collator.
- Переопределяет:
-
hashCodeв классеObject - Возвращает:
- значение хэш-кода для этого объекта.
- См. также:
-
Object.equals(java.lang.Object),System.identityHashCode(java.lang.Object)
© 1993, 2020, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.