A
ListIterator
没有当前元素;它的光标位置始终位于调用返回previous()
的元素和调用返回的元素之间next()
。
为什么Java的ListIterator
实现指向元素之间而不是当前元素?看来,这使得客户端代码的可读性,当它必须反复调用getNext()
,getPrevious()
,所以我认为必须有一个很好的理由选择。
作为一个方面说明,我只是写了一个小图书馆称为peekable-ArrayList的扩展ArrayList
,Iterator
以及ListIterator
提供一个peekAtNext()
和peekAtPrevious()
类似的方法来实现:
@Override public synchronized T peekAtNext() {
T t = next();
previous();
return t;
}
2
番石榴库code.google.com/p/guava-libraries中
—
kevin cline
谢谢凯文!我在SO上对此发布了一个后续问题:是否可以将Guava的ForwardingListIterator与PeekingIterator一起使用?
—
glenviewjeff 2012年