- 所有超接口:
-
Cloneable
- 所有已知子接口:
-
AttributedCharacterIterator
- 所有已知实现类:
-
Segment
,StringCharacterIterator
该接口定义了一个在文本上进行双向迭代的协议。迭代器在有限序列的字符上进行迭代。字符的索引值从getBeginIndex()返回的值开始,一直到getEndIndex()-1返回的值结束。
从末尾到开头反向遍历文本
从文本中的给定位置向前和向后遍历。在此示例中,对notBoundary()的调用表示一些额外的停止条件。
迭代器维护一个当前字符索引,其有效范围从getBeginIndex()到getEndIndex(); getEndIndex()的值包含在内,以允许处理零长度文本范围并出于历史原因。可以通过调用getIndex()来检索当前索引,并通过调用setIndex()、first()和last()来直接设置当前索引。
方法previous()和next()用于迭代。如果它们移动到从getBeginIndex()到getEndIndex()-1的范围之外,则返回DONE,表示迭代器已经到达序列的末尾。其他方法也会返回DONE,以指示当前索引在此范围之外。
示例:
从头到尾遍历文本
public void traverseForward(CharacterIterator iter) {
for (char c = iter.first(); c != CharacterIterator.DONE; c = iter.next()) {
processChar(c);
}
}
public void traverseBackward(CharacterIterator iter) {
for (char c = iter.last(); c != CharacterIterator.DONE; c = iter.previous()) {
processChar(c);
}
}
public void traverseOut(CharacterIterator iter, int pos) {
for (char c = iter.setIndex(pos);
c != CharacterIterator.DONE && notBoundary(c);
c = iter.next()) {
}
int end = iter.getIndex();
for (char c = iter.setIndex(pos);
c != CharacterIterator.DONE && notBoundary(c);
c = iter.previous()) {
}
int start = iter.getIndex();
processSection(start, end);
}
- 自版本:
- 1.1
- 参见:
-
Field Summary
-
Method Summary
Modifier and TypeMethodDescriptionclone()
创建此迭代器的副本char
current()
获取当前位置的字符(由getIndex()返回)。char
first()
将位置设置为getBeginIndex()并返回该位置的字符。int
返回文本的起始索引。int
返回文本的结束索引。int
getIndex()
返回当前索引。char
last()
将位置设置为getEndIndex()-1(如果文本为空,则为getEndIndex())并返回该位置的字符。char
next()
迭代器的索引增加一,并返回新索引处的字符。char
previous()
迭代器的索引减少一,并返回新索引处的字符。char
setIndex
(int position) 将位置设置为文本中的指定位置,并返回该字符。
-
Field Details
-
DONE
static final char DONE当迭代器到达文本的末尾或开头时返回的常量。该值为'\\uFFFF',即“不是字符”值,不应出现在任何有效的Unicode字符串中。- 参见:
-
-
Method Details
-
first
char first()将位置设置为getBeginIndex()并返回该位置的字符。- 返回:
- 文本中的第一个字符,如果文本为空则返回DONE
- 参见:
-
last
char last()将位置设置为getEndIndex()-1(如果文本为空则为getEndIndex())并返回该位置的字符。- 返回:
- 文本中的最后一个字符,如果文本为空则返回DONE
- 参见:
-
current
char current()获取当前位置的字符(由getIndex()返回)。- 返回:
- 当前位置的字符,如果当前位置超出文本末尾则返回DONE。
- 参见:
-
next
char next()迭代器的索引增加一,并返回新索引处的字符。如果结果索引大于或等于getEndIndex(),则当前索引将重置为getEndIndex(),并返回DONE值。- 返回:
- 新位置处的字符,如果新位置超出文本范围则返回DONE。
-
previous
char previous()迭代器的索引减少一,并返回新索引处的字符。如果当前索引为getBeginIndex(),则索引保持在getBeginIndex(),并返回DONE值。- 返回:
- 新位置处的字符,如果当前位置等于getBeginIndex()则返回DONE。
-
setIndex
char setIndex(int position) 将位置设置为文本中的指定位置,并返回该字符。- 参数:
-
position
- 文本中的位置。有效值范围从getBeginIndex()到getEndIndex()。如果提供了无效值,则会抛出IllegalArgumentException。 - 返回:
- 指定位置处的字符,如果指定位置等于getEndIndex()则返回DONE。
-
getBeginIndex
int getBeginIndex()返回文本的起始索引。- 返回:
- 文本开始的索引。
-
getEndIndex
int getEndIndex()返回文本的结束索引。该索引是文本结束后第一个字符的索引。- 返回:
- 文本中最后一个字符后的索引
-
getIndex
int getIndex()返回当前索引。- 返回:
- 当前索引。
-
clone
Object clone()创建此迭代器的副本- 返回:
- 此迭代器的副本
-