Spec-Zone.ru › OpenJDK 25

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

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

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, 2025, 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.
https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/text/CollationElementIterator.html

Spec-Zone.ru

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