Класс 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'). Ключ символа — это целое число, составленное из первичного порядка (короткий), вторичного порядка (байт) и третичного порядка (байт). Java строго определяет размер и знаковый тип своих примитивных типов данных. Поэтому статические функции primaryOrder, secondaryOrder, и tertiaryOrder возвращают соответственно int, short, и short, чтобы обеспечить правильность значения ключа. Пример использования итератора:
String testString = "This is a test";
Collator col = Collator.getInstance();
if (col instanceof RuleBasedCollator) {
RuleBasedCollator ruleBasedCollator = (RuleBasedCollator)col;
CollationElementIterator collationElementIterator = ruleBasedCollator.getCollationElementIterator(testString);
int primaryOrder = CollationElementIterator.primaryOrder(collationElementIterator.next());
:
} CollationElementIterator.next возвращает порядок сортировки следующего символа. Порядок сортировки состоит из первичного, вторичного и третичного порядка. Тип данных порядка сортировки — int. Первые 16 бит порядка сортировки — это первичный порядок; следующие 8 бит — вторичный порядок, а последние 8 бит — третичный порядок.
Примечание: CollationElementIterator является частью реализации RuleBasedCollator. Он используется только с экземплярами RuleBasedCollator.
- См. также:
-
Collator,RuleBasedCollator
Поля
| Модификатор и тип | Поле и описание |
|---|---|
static int |
NULLORDER Порядок null, указывающий на достижение конца строки курсором. |
Методы
| Модификатор и тип | Метод и описание |
|---|---|
int |
getMaxExpansion(int order) Возвращает максимальную длину любых последовательностей расширения, которые заканчиваются указанным порядком сравнения. |
int |
getOffset() Возвращает смещение символа в исходном тексте, соответствующее следующему элементу сортировки. |
int |
next() Получить следующий элемент сортировки в строке. |
int |
previous() Получить предыдущий элемент сортировки в строке. |
static int |
primaryOrder(int order) Возвращает первичную составляющую элемента сортировки. |
void |
reset() Сбрасывает курсор в начало строки. |
static short |
secondaryOrder(int order) Возвращает вторичную составляющую элемента сортировки. |
void |
setOffset(int newOffset) Устанавливает итератор на элемент сортировки, соответствующий указанному символу (параметр — смещение СИМВОЛА в исходной строке, а не смещение в соответствующей последовательности элементов сортировки). |
void |
setText(CharacterIterator source) Устанавливает новую строку для итерации. |
void |
setText(String source) Устанавливает новую строку для итерации. |
static short |
tertiaryOrder(int order) Возвращает третичную составляющую элемента сортировки. |
Методы, унаследованные от класса java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait Поля
NULLORDER
public static final int NULLORDER
Порядок null, указывающий на достижение конца строки курсором.
- См. также:
- Постоянные значения полей
Методы
reset
public void reset()
Сбрасывает курсор в начало строки. Следующий вызов next() вернет первый элемент сортировки в строке.
next
public int next()
Получить следующий элемент сортировки в строке.
Этот итератор перебирает последовательность элементов сортировки, которые были построены из строки. Поскольку не обязательно существует взаимно однозначное соответствие между символами и элементами сортировки, это не означает то же самое, что «вернуть элемент сортировки [или приоритет упорядочения] следующего символа в строке».
Эта функция возвращает элемент сортировки, на который в данный момент указывает итератор, а затем обновляет внутреннюю ссылку, чтобы она указывала на следующий элемент. previous() обновляет ссылку сначала, а затем возвращает элемент. Это означает, что при изменении направления итерации (например, вызов next(), а затем вызов previous(), или вызов previous(), а затем вызов next()), вы получите тот же элемент дважды.
- Возвращает:
- следующий элемент сортировки
previous
public int previous()
Получить предыдущий элемент сортировки в строке.
Этот итератор перебирает последовательность элементов сортировки, которые были построены из строки. Поскольку не обязательно существует взаимно однозначное соответствие между символами и элементами сортировки, это не означает то же самое, что «вернуть элемент сортировки [или приоритет упорядочения] предыдущего символа в строке».
Эта функция обновляет внутреннюю ссылку итератора, чтобы она указывала на элемент сортировки, предшествующий текущему, и затем возвращает этот элемент, в то время как next() возвращает текущий элемент и затем обновляет ссылку. Это означает, что при изменении направления итерации (например, вызов next(), а затем вызов previous(), или вызов previous(), а затем вызов next()), вы получите тот же элемент дважды.
- Возвращает:
- предыдущий элемент сортировки
- C момента:
- 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- Новое смещение символа в исходном тексте. - C момента:
- 1.2
getOffset
public int getOffset()
Возвращает смещение символа в исходном тексте, соответствующее следующему элементу сортировки. (То есть getOffset() возвращает позицию в тексте, соответствующую элементу сортировки, который будет возвращён следующим вызовом next().) Это значение всегда будет индексом ПЕРВОГО символа, соответствующего элементу сортировки (последовательность сокращающихся символов — когда два или более символов соответствуют одному элементу сортировки). Это означает, что если вы выполните setOffset(x), а затем сразу getOffset(), getOffset() не обязательно вернёт x.
- Возвращает:
- Смещение символа в исходном тексте, соответствующее элементу сортировки, который будет возвращен следующим вызовом next().
- C момента:
- 1.2
getMaxExpansion
public int getMaxExpansion(int order)
Возвращает максимальную длину любых последовательностей расширения, которые заканчиваются указанным порядком сравнения.
- Параметры:
-
order- порядок сортировки, возвращенный предыдущим или следующим вызовом. - Возвращает:
- максимальную длину любых последовательностей расширения, заканчивающихся указанным порядком.
- C момента:
- 1.2
setText
public void setText(String source)
Устанавливает новую строку для итерации.
- Параметры:
-
source- новый исходный текст - C момента:
- 1.2
setText
public void setText(CharacterIterator source)
Устанавливает новую строку для итерации.
- Параметры:
-
source- новый исходный текст. - C момента:
- 1.2
© 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.