Класс 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.
- С тех пор:
- 1.1
- См. также:
-
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
reversed, 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, combining-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 #15.
FULL_DECOMPOSITION
public static final int FULL_DECOMPOSITION
Значение режима разложения. При установке FULL_DECOMPOSITION как канонические варианты Unicode, так и совместимые варианты Unicode будут разлагаться для сортировки. Это позволяет сортировать не только акцентированные символы, но и символы со специальными форматами с их нормальной формой. Например, символы ASCII и катаканы с половинной и полной шириной будут сортироваться вместе. FULL_DECOMPOSITION является наиболее полным и, следовательно, самым медленным режимом разложения.
FULL_DECOMPOSITION соответствует нормализации формы KD, описанной в Техническом отчете Unicode #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)
Преобразует строку в последовательность битов, которые можно сравнить побитово с другими CollationKey. CollationKey обеспечивают лучшую производительность по сравнению с Collator.compare, когда строки участвуют в нескольких сравнениях. Смотрите описание класса Collator для примера использования CollationKey.
- Параметры:
-
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. Режим разложения определяет, как обрабатываются составные символы Unicode. Настройка режима разложения позволяет пользователю выбрать между более быстрым и более полным поведением сортировки.
Три значения для режима разложения:
- 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 идентичен указанному; 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.
https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/text/Collator.html