Класс 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()

Возвращает массив всех локалей, для которых методы getInstance этого класса могут возвращать локализованные экземпляры.

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 акцентированные символы не будут разлагаться для сортировки. Это значение по умолчанию и обеспечивает самую быструю сортировку, но даст правильные результаты только для языков, не использующих акценты.

См. также:
getDecomposition(), setDecomposition(int), Значения константных полей

CANONICAL_DECOMPOSITION

public static final int CANONICAL_DECOMPOSITION

Значение режима разложения. При установке CANONICAL_DECOMPOSITION символы, являющиеся каноническими вариантами согласно стандарту Unicode, будут разлагаться для сортировки. Это необходимо для корректной сортировки акцентированных символов.

CANONICAL_DECOMPOSITION соответствует нормализации формы D, описанной в Техническом отчете Unicode #15.

См. также:
getDecomposition(), setDecomposition(int), Значения константных полей

FULL_DECOMPOSITION

public static final int FULL_DECOMPOSITION

Значение режима разложения. При установке FULL_DECOMPOSITION как канонические варианты Unicode, так и совместимые варианты Unicode будут разлагаться для сортировки. Это позволяет сортировать не только акцентированные символы, но и символы со специальными форматами с их нормальной формой. Например, символы ASCII и катаканы с половинной и полной шириной будут сортироваться вместе. FULL_DECOMPOSITION является наиболее полным и, следовательно, самым медленным режимом разложения.

FULL_DECOMPOSITION соответствует нормализации формы KD, описанной в Техническом отчете Unicode #15.

См. также:
getDecomposition(), setDecomposition(int), Значения константных полей

Конструкторы

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

Переопределяет:
clone в классе Object
Возвращает:
клонированный экземпляр.
См. также:
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

Spec-Zone .ru
спецификации, руководства, описания, API