CharacterIterator
CharacterIterator (텍스트 양방향 반복 프로토콜)
텍스트를 양방향으로 순회(iteration)하기 위한 프로토콜을 정의하는 인터페이스예요. 이 반복자는 제한된(bounded) 문자 시퀀스를 순회해요.
본문
문자는 getBeginIndex()가 반환하는 값에서 시작해 getEndIndex()-1까지의 값으로 인덱스돼요. 반복자는 현재 문자 인덱스를 유지하는데, 유효 범위는 getBeginIndex()부터 getEndIndex()까지예요. getEndIndex()가 포함되는 이유는 길이가 0인 텍스트 범위를 처리하기 위함이고, 역사적인 이유도 있어요.
현재 인덱스는 getIndex()로 얻고, setIndex(), first(), last()로 직접 설정해요. previous()와 next()는 순회에 쓰이며, getBeginIndex()부터 getEndIndex()-1 범위 밖으로 벗어나려 하면 DONE을 반환해 시퀀스의 끝에 도달했음을 알려줘요. 다른 메서드도 현재 인덱스가 이 범위 밖임을 나타내기 위해 DONE을 반환할 수 있어요.
간단한 사용 예시예요. 텍스트를 처음부터 끝까지 순회하려면:
for (char c = iter.first(); c != CharacterIterator.DONE; c = iter.next()) {
processChar(c);
}
텍스트를 끝에서 처음으로 거꾸로 순회하려면:
for (char c = iter.last(); c != CharacterIterator.DONE; c = iter.previous()) {
processChar(c);
}
CharacterIterator.DONE은 반복이 끝났음을 뜻하는 상수값(문자 \uFFFF)이에요.