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年