Spec-Zone.ru › OpenJDK 24

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

Примечание API:
CollationKey из разных Collator не могут быть сравнены. См. описание класса CollationKey для примера использования CollationKey.
С:
1.1
См. также:
  • RuleBasedCollator
  • CollationKey
  • CollationElementIterator
  • Locale

Краткое описание полей

Модификатор и тип Поле Описание
static final int CANONICAL_DECOMPOSITION
Значение режима разложения.
static final int FULL_DECOMPOSITION
Значение режима разложения.
static final int IDENTICAL
Значение силы сортировки.
static final int NO_DECOMPOSITION
Значение режима разложения.
static final int PRIMARY
Значение силы сортировки.
static final int SECONDARY
Значение силы сортировки.
static final int TERTIARY
Значение силы сортировки.

Краткое описание конструкторов

Collator()
Модификатор Конструктор Описание
protected
Конструктор по умолчанию.

Краткое описание методов

Модификатор и тип Метод Описание
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, комбинирующая 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, как описано в Приложении 15 к стандарту Unicode: Формы нормализации Unicode.

Внешние спецификации
  • Формы нормализации Unicode
См. также:
  • getDecomposition()
  • setDecomposition(int)
  • Значения константных полей

FULL_DECOMPOSITION

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

FULL_DECOMPOSITION соответствует нормализации формы KD, как описано в Приложении 15 к стандарту Unicode: Формы нормализации Unicode.

Внешние спецификации
  • Формы нормализации Unicode
См. также:
  • getDecomposition()
  • setDecomposition(int)
  • Значения константных полей

Подробное описание конструкторов

Collator

protected Collator()
Конструктор по умолчанию. Этот конструктор защищён, чтобы подклассы могли к нему получить доступ. Пользователи обычно создают подкласс Collator, вызывая фабричный метод getInstance.
См. также:
  • getInstance()

Подробное описание методов

getInstance

public static Collator getInstance()
Возвращает коллатор для текущей локали по умолчанию. Текущая локаль по умолчанию определяется с помощью Locale.getDefault().
Возвращает:
Коллатор для локали по умолчанию (например, en_US).
См. также:
  • Locale.getDefault()

getInstance

public static Collator getInstance(Locale desiredLocale)
Возвращает коллатор для указанной локали. Если у указанной локали есть "ks" и/или "kk" параметры сортировки Unicode, этот метод вызовет setStrength(int) и/или setDecomposition(int) на созданном экземпляре, если указанные параметры сортировки Unicode распознаны на основе следующих соответствий:
Сопоставления силы/декомпозиции
Значения BCP 47 для силы (ks) Постоянные коллатора для силы
level1 PRIMARY
level2 SECONDARY
level3 TERTIARY*
identic IDENTICAL
Значения BCP 47 для нормализации (kk) Постоянные коллатора для декомпозиции
true CANONICAL_DECOMPOSITION
false NO_DECOMPOSITION*
Звёздочка (*) обозначает значение по умолчанию. Если указанное значение настройки не распознано, сила и/или декомпозиция не переопределяются, как если бы параметров BCP 47 сортировки в указанной локали не было.
Примечание API:
Реализации класса Collator могут создавать различные экземпляры на основе "co" идентификатора сортировки Unicode в desiredLocale. Например:
Collator.getInstance(Locale.forLanguageTag("sv-u-co-trad"));
может возвращать экземпляр Collator со шведской традиционной сортировкой, которая присваивает 'v' и 'w' тот же порядок сортировки, тогда как экземпляр Collator для шведской локали без идентификатора "co" различает 'v' и 'w'.
Параметры:
desiredLocale - желаемая локаль.
Возвращает:
Коллатор для указанной локали.
Внешние спецификации
  • Язык разметки данных локали Unicode (LDML)
См. также:
  • Locale
  • ResourceBundle

compare

public abstract int compare(String source, String target)
Сравнивает исходную строку с целевой строкой в соответствии с правилами сортировки для этого Collator. Возвращает целое число меньше, равно или больше нуля в зависимости от того, меньше ли, равно или больше ли исходная строка целевой строки. См. описание класса Collator для примера использования.

Для однократного сравнения этот метод имеет наилучшую производительность. Если заданная строка будет участвовать во множественных сравнениях, CollationKey.compareTo имеет наилучшую производительность. См. описание класса Collator для примера использования CollationKeys.

Parameters:
source - исходная строка.
target - целевая строка.
Returns:
Возвращает целочисленное значение. Значение меньше нуля, если исходная строка меньше целевой, значение равно нулю, если исходная и целевая строки равны, значение больше нуля, если исходная строка больше целевой.
See Also:
  • CollationKey
  • getCollationKey(java.lang.String)

compare

public int compare(Object o1, Object o2)
Сравнивает два своих аргумента по порядку. Возвращает отрицательное целое число, ноль или положительное целое число, в зависимости от того, меньше ли, равно или больше ли первый аргумент второго.

Эта реализация просто возвращает compare((String)o1, (String)o2) .

Specified by:
compare в интерфейсе Comparator<Object>
Parameters:
o1 - первый сравниваемый объект.
o2 - второй сравниваемый объект.
Returns:
отрицательное целое число, ноль или положительное целое число, в зависимости от того, меньше ли, равно или больше ли первый аргумент второго.
Throws:
ClassCastException - аргументы не могут быть преобразованы в строки.
Since:
1.2
See Also:
  • Comparator

getCollationKey

public abstract CollationKey getCollationKey(String source)
Преобразует строку в серию битов, которые могут быть сравнины побитово с другими CollationKeys. CollationKeys обеспечивают лучшую производительность, чем Collator.compare, когда строки участвуют во множественных сравнениях. См. описание класса Collator для примера использования CollationKeys.
Parameters:
source - строка, которая должна быть преобразована в ключ сортировки.
Returns:
CollationKey для заданной строки, основанный на правилах сортировки этого Collator. Если исходная строка null, возвращается null CollationKey.
See Also:
  • CollationKey
  • compare(java.lang.String, java.lang.String)

equals

public boolean equals(String source, String target)
Удобный метод для сравнения равенства двух строк на основе правил сортировки этого Collator.
Parameters:
source - исходная строка для сравнения.
target - целевая строка для сравнения.
Returns:
true, если строки равны в соответствии с правилами сортировки. false в противном случае.
See Also:
  • compare(java.lang.String, java.lang.String)

getStrength

public int getStrength()
Возвращает свойство силы этого Collator. Свойство силы определяет минимальный уровень различий, считающийся существенным при сравнении. См. описание класса Collator для примера использования.
Returns:
текущее свойство силы этого Collator.
See Also:
  • setStrength(int)
  • PRIMARY
  • SECONDARY
  • TERTIARY
  • IDENTICAL

setStrength

public void setStrength(int newStrength)
Устанавливает свойство силы этого Collator. Свойство силы определяет минимальный уровень различий, считающихся существенными при сравнении. См. описание класса Collator для примера использования.
Parameters:
newStrength - новое значение силы.
Throws:
IllegalArgumentException - Если новое значение силы не является одним из PRIMARY, SECONDARY, TERTIARY или IDENTICAL.
See Also:
  • getStrength()
  • PRIMARY
  • SECONDARY
  • TERTIARY
  • IDENTICAL

getDecomposition

public int getDecomposition()
Получить режим разложения этого Collator. Режим разложения определяет, как обрабатываются составленные символы Unicode. Настройка режима разложения позволяет пользователю выбрать между более быстрым и более полным поведением сортировки.

Три значения для режима разложения:

  • NO_DECOMPOSITION,
  • CANONICAL_DECOMPOSITION
  • FULL_DECOMPOSITION.
См. документацию по этим трем константам для описания их значения.
Returns:
режим разложения
See Also:
  • setDecomposition(int)
  • NO_DECOMPOSITION
  • CANONICAL_DECOMPOSITION
  • FULL_DECOMPOSITION

setDecomposition

public void setDecomposition(int decompositionMode)
Установить режим разложения этого Collator. См. getDecomposition для описания режима разложения.
Parameters:
decompositionMode - новый режим разложения.
Throws:
IllegalArgumentException - Если заданное значение не является допустимым режимом разложения.
See Also:
  • getDecomposition()
  • NO_DECOMPOSITION
  • CANONICAL_DECOMPOSITION
  • FULL_DECOMPOSITION

getAvailableLocales

public static Locale[] getAvailableLocales()
Возвращает массив всех локалей, для которых методы getInstance этого класса могут возвращать локализованные экземпляры. Возвращаемый массив представляет собой объединение локалей, поддерживаемых Java runtime и установленными реализациями CollatorProvider. Как минимум, возвращаемый массив должен содержать экземпляр Locale, равный Locale.ROOT, и экземпляр Locale, равный Locale.US.
Returns:
Массив локалей, для которых доступны локализованные Collator экземпляры.

clone

public Object clone()
Переопределяет Cloneable
Overrides:
clone в классе Object
Returns:
клонированный экземпляр.
See Also:
  • Cloneable

equals

public boolean equals(Object that)
Сравнивает равенство двух Collator.
Specified by:
equals в интерфейсе Comparator<Object>
Overrides:
equals в классе Object
Parameters:
that - Collator для сравнения с этим.
Returns:
true, если этот Collator такой же, как Collator; иначе false.
See Also:
  • Object.equals(Object)
  • Object.hashCode()

hashCode

public abstract int hashCode()
Генерирует код хеширования для этого Collator.
Overrides:
hashCode в классе Object
Returns:
значение кода хеширования для этого объекта
See Also:
  • Object.equals(java.lang.Object)
  • System.identityHashCode(java.lang.Object)

© 1993, 2025, 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://download.java.net/java/early_access/jdk24/docs/api/java.base/java/text/Collator.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API