是否可以将Guava的ForwardingListIterator与PeekingIterator结合起来?

时间:2012-03-04 14:32:23

标签: java list collections iterator guava

我想使用Guava实现一个“peekable”ListIterator,它可以让我在不移动光标的情况下查看上一个和下一个列表元素。这类似于Guava的PeekingIterator,只是双向的,因为Guava的PeekingIterator只有next()方法,而不是previous()

这是否需要通过编写新的PeekingListIterator类来实现,还是有一种Guava预期的方式来组合这两个概念?

1 个答案:

答案 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;
}