Можно ли объединить ForwardingListIterator в Guava с PeekingIterator? - PullRequest
4 голосов
/ 04 марта 2012

Я хочу использовать Guava для реализации "peekable" ListIterator, который позволяет мне просматривать предыдущий и следующий элементы списка без перемещения курсора.Это похоже на PeekingIterator Гуавы, только двунаправленный, потому что PeekingIterator в Гуаве имеет только next() метод, а не previous().

Нужно ли это реализовывать, написав новый класс PeekingListIterator или есть способ, объединяющий эти два понятия в Гуаве?

1 Ответ

15 голосов
/ 04 марта 2012

В чем смысл введения новой концепции «заглядывания» в итератор, который уже легко прокручивается в обоих направлениях?

Если вы действительно этого хотите, вы можете просто реализовать два простых статических помощника:

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;
}
...