Skip to content

Instantly share code, notes, and snippets.

@VenkataRaju
Created December 14, 2015 14:38
Show Gist options
  • Save VenkataRaju/a5fa42c7d7c856ade452 to your computer and use it in GitHub Desktop.
Save VenkataRaju/a5fa42c7d7c856ade452 to your computer and use it in GitHub Desktop.
Peek an element without moving the pointer (Untested)
public final class PeekingIterator<T> implements Iterator<T>
{
private Iterator<T> iterator;
private boolean elementPeeked;
private T peekedElement;
public PeekingIterator(Iterator<T> iterator)
{
this.iterator = iterator;
}
@Override
public boolean hasNext()
{
if (elementPeeked)
return true;
return iterator.hasNext();
}
public T peekNext()
{
if (elementPeeked)
return peekedElement;
if (!iterator.hasNext())
throw new NoSuchElementException();
elementPeeked = true;
return peekedElement = iterator.next();
}
@Override
public T next()
{
if (elementPeeked)
{
elementPeeked = false;
return peekedElement;
}
return iterator.next();
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment