Spec-Zone.ru › OpenJDK 27

Класс CollationElementIterator

java.lang.Object
java.text.CollationElementIterator
public final class CollationElementIterator extends Object
Класс CollationElementIterator используется как итератор для перебора каждого символа интернациональной строки. Используйте итератор, чтобы получить приоритет сортировки текущего символа. Приоритет сортировки символа, который мы называем ключом, определяет, как символ сортируется в заданном объекте сортировки.

Например, рассмотрим следующие примеры для испанского языка:

"ca" → the first key is key('c') and second key is key('a').
"cha" → the first key is key('ch') and second key is key('a').
А для немецкого языка:
"äb" → the first key is key('a'), the second key is key('e'), and
the third key is key('b').
Ключ символа — это целое число, состоящее из первичного порядка (short), вторичного порядка (byte) и третичного порядка (byte). В Java строго определены размер и знаковость примитивных типов данных. Поэтому статические функции primaryOrder, secondaryOrder и tertiaryOrder возвращают соответственно int, short и short, чтобы гарантировать корректность значения ключа.

Пример использования итератора:

String testString = "This is a test";
Collator col = Collator.getInstance();
if (col instanceof RuleBasedCollator ruleBasedCollator) {
    CollationElementIterator collationElementIterator = ruleBasedCollator.getCollationElementIterator(testString);
    int primaryOrder = CollationElementIterator.primaryOrder(collationElementIterator.next());
        ⋮
}

CollationElementIterator.next возвращает порядок сортировки следующего символа. Порядок сортировки состоит из первичного, вторичного и третичного порядков. Тип данных порядка сортировки — int. Первые 16 бит порядка сортировки составляют его первичный порядок; следующие 8 бит — вторичный порядок, а последние 8 бит — третичный порядок.

Примечание: CollationElementIterator является частью реализации RuleBasedCollator. Она может использоваться только с экземплярами RuleBasedCollator.

Начиная с версии:
1.1
См. также:
  • Collator
  • RuleBasedCollator

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

Модификатор и тип Поле Описание
static final int NULLORDER
Нулевой порядок, указывающий, что курсор достиг конца строки.

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

Модификатор и тип Метод Описание
int getMaxExpansion(int order)
Возвращает максимальную длину последовательностей расширения, заканчивающихся указанным порядком сравнения.
int getOffset()
Возвращает смещение символа в исходном тексте, соответствующее следующему элементу сортировки.
int next()
Получает следующий элемент сортировки в строке.
int previous()
Получает предыдущий элемент сортировки в строке.
static final int primaryOrder(int order)
Возвращает первичный компонент элемента сортировки.
void reset()
Сбрасывает курсор в начало строки.
static final short secondaryOrder(int order)
Возвращает вторичный компонент элемента сортировки.
void setOffset(int newOffset)
Устанавливает итератор на элемент сортировки, соответствующий указанному символу (параметр задаёт смещение СИМВОЛА в исходной строке, а не смещение в соответствующей последовательности элементов сортировки).
void setText(String source)
Задаёт новую строку для перебора.
void setText(CharacterIterator source)
Задаёт новую строку для перебора.
static final short tertiaryOrder(int order)
Возвращает третичный компонент элемента сортировки.

Методы, объявленные в классе Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Модификатор и тип Метод Описание
protected Object clone()
Создаёт и возвращает копию этого объекта.
boolean equals(Object obj)
Указывает, равен ли этот объект какому-либо другому объекту.
protected void finalize()
Устарело и подлежит удалению: этот элемент API может быть удалён в будущей версии.
Финализация устарела и подлежит удалению в одном из будущих выпусков.
final Class<?> getClass()
Возвращает класс времени выполнения этого Object.
int hashCode()
Возвращает хеш-код этого объекта.
final void notify()
Пробуждает один поток, ожидающий на мониторе этого объекта.
final void notifyAll()
Пробуждает все потоки, ожидающие на мониторе этого объекта.
String toString()
Возвращает строковое представление объекта.
final void wait()
Приостанавливает текущий поток до его пробуждения, обычно посредством уведомления или прерывания.
final void wait(long timeoutMillis)
Приостанавливает текущий поток до его пробуждения, обычно посредством уведомления или прерывания, либо до истечения заданного промежутка реального времени.
final void wait(long timeoutMillis, int nanos)
Приостанавливает текущий поток до его пробуждения, обычно посредством уведомления или прерывания, либо до истечения заданного промежутка реального времени.

Подробное описание полей

NULLORDER

public static final int NULLORDER
Нулевой порядок, указывающий, что курсор достиг конца строки.
См. также:
  • Значения констант полей

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

reset

public void reset()
Сбрасывает курсор в начало строки. Следующий вызов next() вернёт первый элемент сортировки в строке.

next

public int next()
Получает следующий элемент сортировки в строке.

Этот итератор перебирает последовательность элементов сортировки, сформированную из строки. Поскольку между символами и элементами сортировки не обязательно существует взаимно однозначное соответствие, это не означает то же самое, что «вернуть элемент сортировки [или приоритет сортировки] следующего символа в строке».

Эта функция возвращает элемент сортировки, на который в данный момент указывает итератор, а затем перемещает внутренний указатель на следующий элемент. Метод previous() сначала перемещает указатель, а затем возвращает элемент. Это означает, что при смене направления перебора (то есть при вызове next(), а затем previous() или previous(), а затем next()) один и тот же элемент будет получен дважды.

Возвращает:
следующий элемент сортировки

previous

public int previous()
Получает предыдущий элемент сортировки в строке.

Этот итератор перебирает последовательность элементов сортировки, сформированную из строки. Поскольку между символами и элементами сортировки не обязательно существует взаимно однозначное соответствие, это не означает то же самое, что «вернуть элемент сортировки [или приоритет сортировки] предыдущего символа в строке».

Эта функция перемещает внутренний указатель итератора на элемент сортировки перед тем, на который он указывает в данный момент, а затем возвращает этот элемент; метод next() возвращает текущий элемент и затем перемещает указатель. Это означает, что при смене направления перебора (то есть при вызове next(), а затем previous() или previous(), а затем next()) один и тот же элемент будет получен дважды.

Возвращает:
предыдущий элемент сортировки
Начиная с версии:
1.2

primaryOrder

public static final int primaryOrder(int order)
Возвращает первичный компонент элемента сортировки.
Параметры:
order — элемент сортировки
Возвращает:
первичный компонент элемента

secondaryOrder

public static final short secondaryOrder(int order)
Возвращает вторичный компонент элемента сортировки.
Параметры:
order — элемент сортировки
Возвращает:
вторичный компонент элемента

tertiaryOrder

public static final short tertiaryOrder(int order)
Возвращает третичный компонент элемента сортировки.
Параметры:
order — элемент сортировки
Возвращает:
третичный компонент элемента

setOffset

public void setOffset(int newOffset)
Устанавливает итератор на элемент сортировки, соответствующий указанному символу (параметр задаёт смещение СИМВОЛА в исходной строке, а не смещение в соответствующей последовательности элементов сортировки). Значение, возвращаемое следующим вызовом next(), будет элементом сортировки, соответствующим указанной позиции в тексте. Если эта позиция находится в середине сокращающейся последовательности символов, результатом следующего вызова next() будет элемент сортировки для этой последовательности. Это означает, что getOffset() не гарантирует возврата того же значения, которое было передано в предшествующий вызов setOffset().
Параметры:
newOffset — новое смещение символа в исходном тексте.
Начиная с версии:
1.2

getOffset

public int getOffset()
Возвращает смещение символа в исходном тексте, соответствующее следующему элементу сортировки. (То есть getOffset() возвращает позицию в тексте, соответствующую элементу сортировки, который будет возвращён следующим вызовом next().) Это значение всегда будет индексом ПЕРВОГО символа, соответствующего элементу сортировки (сокращающаяся последовательность символов — это два или более символа, соответствующих одному и тому же элементу сортировки). Поэтому, если вызвать setOffset(x), а сразу за ним getOffset(), getOffset() не обязательно вернёт x.
Возвращает:
смещение символа в исходном тексте, соответствующее элементу сортировки, который будет возвращён следующим вызовом next().
Начиная с версии:
1.2

getMaxExpansion

public int getMaxExpansion(int order)
Возвращает максимальную длину последовательностей расширения, заканчивающихся указанным порядком сравнения.
Параметры:
order — порядок сортировки, возвращённый методом previous или next.
Возвращает:
максимальная длина последовательностей расширения, заканчивающихся указанным порядком.
Начиная с версии:
1.2

setText

public void setText(String source)
Задаёт новую строку для перебора.
Параметры:
source — новый исходный текст
Начиная с версии:
1.2

setText

public void setText(CharacterIterator source)
Задаёт новую строку для перебора.
Параметры:
source — новый исходный текст.
Начиная с версии:
1.2

Сообщить об ошибке или предложить улучшение
Дополнительную справочную информацию по API и документацию для разработчиков см. в разделе Документация Java SE, содержащем более подробные описания для разработчиков, обзоры основных понятий, определения терминов, обходные решения и примеры работающего кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или её аффилированных лиц в США и других странах.
Авторские права © 1993, 2026, Oracle и/или её аффилированные лица, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 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.

Spec-Zone.ru

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