我想使用Guava实现一个“peekable”ListIterator
,它可以让我在不移动光标的情况下查看上一个和下一个列表元素。这类似于Guava的PeekingIterator
,只是双向的,因为Guava的PeekingIterator
只有next()
方法,而不是previous()
。
这是否需要通过编写新的PeekingListIterator
类来实现,还是有一种Guava预期的方式来组合这两个概念?
答案 0 :(得分:15)
在一个已经可以在两个方向上轻松滚动的迭代器中引入一个新的“窥视”概念的价值在哪里?
如果你真的想要它,你可以实现两个简单的静态助手:
public static <T> T peekNext(ListIterator<T> iterator) {
T next = iterator.next();
iterator.previous();
return next;
}
public static <T> T peekPrevious(ListIterator<T> iterator) {
T previous = iterator.previous();
iterator.next();
return previous;
}