32 lines
520 B
Java
32 lines
520 B
Java
class PeekingIterator implements Iterator<Integer> {
|
|
private Iterator<Integer> it;
|
|
|
|
private Integer pVal;
|
|
private boolean pHasNext;
|
|
|
|
public PeekingIterator(Iterator<Integer> iterator) {
|
|
it = iterator;
|
|
next();
|
|
}
|
|
|
|
public Integer peek() {
|
|
return pVal;
|
|
}
|
|
|
|
@Override
|
|
public Integer next() {
|
|
pHasNext = it.hasNext();
|
|
|
|
Integer oldValue = pVal;
|
|
if (pHasNext) {
|
|
pVal = it.next();
|
|
}
|
|
|
|
return oldValue;
|
|
}
|
|
|
|
@Override
|
|
public boolean hasNext() {
|
|
return pHasNext;
|
|
}
|
|
}
|