该接口为文本的双向迭代定义协议。迭代器在有边界的字符序列上迭代。字符以 getBeginIndex 返回的值作为开始索引和继续用 getEndIndex()-1 的值生成索引。当前字符的索引可通过调用 getIndex 来获取。调用 setIndex 将引起在字符序列中把迭代器移到新位置。如果在任何时间迭代器的当前索引移到 getBeginIndex 和 getEndIndexIf 的范围之外,则 previous() 和 next() 将返回 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.prev()) {
processChar(c);
}
}
从文本中的给定位置向前和向后遍历。
在该例中对 notBoundary() 的调用描述了一些附加的停止标准。
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.prev()) {}
int start = iter.getIndex();
processSection(start,end);
}
public static final char DONE
public abstract char first()
public abstract char last()
public abstract char current()
public abstract char next()
public abstract char previous()
public abstract char setIndex(int position)
public abstract int getBeginIndex()
public abstract int getEndIndex()
public abstract int getIndex()
public abstract Object clone()