![JAR search and dependency download from the Maven repository](/logo.png)
com.jillesvangurp.iterables.PeekableIterator Maven / Gradle / Ivy
package com.jillesvangurp.iterables;
import java.util.Iterator;
/**
* Iterator that implements a peek method.
*
* @param
*/
public class PeekableIterator implements Iterator {
private final Iterator iterator;
T buffered=null;
public PeekableIterator(Iterator iterator) {
this.iterator = iterator;
}
public PeekableIterator(Iterable iterable) {
this.iterator = iterable.iterator();
}
@Override
public boolean hasNext() {
return iterator.hasNext() || buffered != null;
}
@Override
public T next() {
T result = buffered;
if(result != null) {
buffered=null;
return result;
} else {
return iterator.next();
}
}
@Override
public void remove() {
iterator.remove();
}
/**
* Allows you to peek at the next element without moving the iterator forward. You can call peek as often as you want.
* @return the next element without moving the iterator forward.
*/
public T peek() {
if(buffered != null) {
return buffered;
} else {
buffered=next();
return buffered;
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy