java.text

接口
异常
java.lang.Object
  继承者 java.text.CollationElementIterator

public final class CollationElementIterator
     
extends Object

CollationElementIterator 类用作一个迭代器,以遍历国际化字符串的每个字符。使用该迭代器返回所定位字符的排序优先级。我们所指的字符排序优先级,是指在给定 collation 对象中定义字符排序方式的一个键。

例如,在西班牙语中考虑以下字符串:

"ca" -> 第一个键是键 ('c'),而第二个键是键 ('a')。
"cha" -> 第一个键是键 ('ch'),而第二个键是键 ('a')。
 
在德语中,考虑以下字符串:
"?b" -> 第一个键是键 ('a'),第二个键是键 ('e'),
第三个键是键 ('b')。
 
字符的键是由主顺序(short)、第二顺序(byte)和第三顺序(byte)组成的一个整数。Java 严格定义了其基本数据类型的大小和符号。因此,static 函数 primaryOrdersecondaryOrdertertiaryOrder 分别返回 intshortshort,以确保键值的正确性。

以下是使用迭代器的例子:


  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
 

字段详细信息

NULLORDER

public static final int NULLORDER
Null 顺序指示光标到达字符串末尾。

另请参见:
常量字段值
方法详细信息

reset

public void reset()
将光标重置于字符串开始处。下一次调用 next() 将返回字符串中的第一个 collation 元素。


next

public int next()
获取字符串中的下一个 collation 元素。

此迭代器对构建于字符串的 collation 元素序列进行迭代。因为从字符到 collation 元素不一定存在一一映射关系,因此这与“返回字符串中下一个字符的 collation 元素(或排序优先级)”意义不同。

此函数返回迭代器当前指向的 collation 元素,然后将内部指针更新为指向下一个元素。previous() 则首先更新指针,然后再返回元素。这意味着,如果您在进行迭代时改变方向(例如,调用 next(),然后调用 previous(),或者调用 previous(),然后调用 next()),将两次获取同一个元素。


previous

public int previous()
获取字符串中前一个 collation 元素。

此迭代器对构建于字符串的 collation 元素序列进行迭代。因为从字符到 collation 元素不一定存在一一映射关系,因此这与“返回字符串中前一个字符的 collation 元素(或排序优先级)”意义不同。

此函数将迭代器的内部指针更新为指向它当前指向的 collation 元素的前一个元素,然后返回该元素;而 next() 则先返回当前元素,然后更新指针。这意味着,如果您在进行迭代时改变方向(例如,调用 next(),然后调用 previous(),或者调用 previous(),然后调用 next()),将两次获取同一个元素。

从以下版本开始:
1.2

primaryOrder

public static final int primaryOrder(int order)
返回 collation 元素的主顺序。

参数:
order - collation 元素
返回:
该元素的主顺序

secondaryOrder

public static final short secondaryOrder(int order)
返回 collation 元素的第二顺序。

参数:
order - collation 元素
返回:
该元素的第二顺序

tertiaryOrder

public static final short tertiaryOrder(int order)
返回 collation 元素的第三顺序。

参数:
order - collation 元素
返回:
该元素的第二顺序

setOffset

public void setOffset(int newOffset)
将迭代器设置为指向对应于指定字符的 collation 元素(参数是源字符串中的一个 CHARACTER 偏移量,而不是其对应 collation 元素序列的偏移量)。下一次调用 next() 返回的值将是对应于文本中指定位置的 collation 元素。如果该位置在 contracting 字符序列的中间,则下一次调用 next() 的结果是该序列的 collation 元素。这意味着 getOffset() 返回的值不一定是前一次调用 setOffset() 所传入的值。

参数:
newOffset - 源文本中新的字符偏移量。
从以下版本开始:
1.2

getOffset

public int getOffset()
返回源文本中对应于下一个 collation 元素的字符偏移量。(也就是说,getOffset() 返回的文本中的位置对应于下一次调用 next() 所返回的 collation 元素。)此值始终是对应于 collation 元素的 FIRST 字符的索引(contracting 字符序列是指两个或更多个字符都对应于同一个 collation 元素)。这意味着,如果调用 setOffset(x)后紧接着调用 getOffset(),getOffset() 不一定返回 x。

返回:
源文本中对应于下一次调用 next() 所返回的 collation 元素的字符偏移量。
从以下版本开始:
1.2

getMaxExpansion

public int getMaxExpansion(int order)
返回以指定比较顺序结束的所有扩展序列的最大长度。

参数:
order - 由 previous 或 next 返回的 collation 顺序。
返回:
以指定比较顺序结束的所有扩展序列的最大长度。
从以下版本开始:
1.2

setText

public void setText(String source)
设置一个要迭代的新字符串。

参数:
source - 新的源文本
从以下版本开始:
1.2

setText

public void setText(CharacterIterator source)
设置一个要迭代的新字符串。

参数:
source - 新的源文本。
从以下版本开始:
1.2