java.lang.Object java.text.CollationElementIterator
public final class CollationElementIterator
CollationElementIterator
类用作一个迭代器,以遍历国际化字符串的每个字符。使用该迭代器返回所定位字符的排序优先级。我们所指的字符排序优先级,是指在给定 collation 对象中定义字符排序方式的一个键。
例如,在西班牙语中考虑以下字符串:
在德语中,考虑以下字符串:"ca" -> 第一个键是键 ('c'),而第二个键是键 ('a')。 "cha" -> 第一个键是键 ('ch'),而第二个键是键 ('a')。
字符的键是由主顺序(short)、第二顺序(byte)和第三顺序(byte)组成的一个整数。Java 严格定义了其基本数据类型的大小和符号。因此,static 函数"?b" -> 第一个键是键 ('a'),第二个键是键 ('e'), 第三个键是键 ('b')。
primaryOrder
、
secondaryOrder
和
tertiaryOrder
分别返回
int
、
short
和
short
,以确保键值的正确性。
以下是使用迭代器的例子:
String testString = "This is a test"; RuleBasedCollator ruleBasedCollator = (RuleBasedCollator)Collator.getInstance(); CollationElementIterator collationElementIterator = ruleBasedCollator.getCollationElementIterator(testString); int primaryOrder = CollationElementIterator.primaryOrder(collationElementIterator.next());
CollationElementIterator.next
返回下一个字符的 collation 顺序。collation 顺序由主顺序、第二顺序和第三顺序组成。collation 顺序的数据类型是 int。collation 顺序的前 16 位是它的主顺序,接下来 8 位是第二顺序,最后 8 位是第三顺序。
Collator
,
RuleBasedCollator
字段摘要 | |
---|---|
static int |
NULLORDER Null 顺序指示光标到达字符串末尾。 |
方法摘要 | |
---|---|
int |
getMaxExpansion(int order) 返回以指定比较顺序结束的所有扩展序列的最大长度。 |
int |
getOffset() 返回源文本中对应于下一个 collation 元素的字符偏移量。 |
int |
next() 获取字符串中的下一个 collation 元素。 |
int |
previous() 获取字符串中前一个 collation 元素。 |
static int |
primaryOrder(int order) 返回 collation 元素的主顺序。 |
void |
reset() 将光标重置于字符串开始处。 |
static short |
secondaryOrder(int order) 返回 collation 元素的第二顺序。 |
void |
setOffset(int newOffset) 将迭代器设置为指向对应于指定字符的 collation 元素(参数是源字符串中的一个 CHARACTER 偏移量,而不是其对应 collation 元素序列的偏移量)。 |
void |
setText(CharacterIterator source) 设置一个要迭代的新字符串。 |
void |
setText(String source) 设置一个要迭代的新字符串。 |
static short |
tertiaryOrder(int order) 返回 collation 元素的第三顺序。 |
从类 java.lang.Object 继承的方法 |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
字段详细信息 |
---|
public static final int NULLORDER
方法详细信息 |
---|
public void reset()
public int next()
此迭代器对构建于字符串的 collation 元素序列进行迭代。因为从字符到 collation 元素不一定存在一一映射关系,因此这与“返回字符串中下一个字符的 collation 元素(或排序优先级)”意义不同。
此函数返回迭代器当前指向的 collation 元素,然后将内部指针更新为指向下一个元素。previous() 则首先更新指针,然后再返回元素。这意味着,如果您在进行迭代时改变方向(例如,调用 next(),然后调用 previous(),或者调用 previous(),然后调用 next()),将两次获取同一个元素。
public int previous()
此迭代器对构建于字符串的 collation 元素序列进行迭代。因为从字符到 collation 元素不一定存在一一映射关系,因此这与“返回字符串中前一个字符的 collation 元素(或排序优先级)”意义不同。
此函数将迭代器的内部指针更新为指向它当前指向的 collation 元素的前一个元素,然后返回该元素;而 next() 则先返回当前元素,然后更新指针。这意味着,如果您在进行迭代时改变方向(例如,调用 next(),然后调用 previous(),或者调用 previous(),然后调用 next()),将两次获取同一个元素。
public static final int primaryOrder(int order)
order
- collation 元素
public static final short secondaryOrder(int order)
order
- collation 元素
public static final short tertiaryOrder(int order)
order
- collation 元素
public void setOffset(int newOffset)
newOffset
- 源文本中新的字符偏移量。
public int getOffset()
public int getMaxExpansion(int order)
order
- 由 previous 或 next 返回的 collation 顺序。
public void setText(String source)
source
- 新的源文本
public void setText(CharacterIterator source)
source
- 新的源文本。