package com.jivesoftware.os.amza.service.storage.delta;
import java.util.Iterator;
import java.util.Map;
/**
*
*/
class OverConsumingEntryIterator<K, V> implements Iterator<Map.Entry<K, V>> {
private final Iterator<Map.Entry<K, V>> backingIterator;
private Map.Entry<K, V> next = null;
private Map.Entry<K, V> peek = null;
public OverConsumingEntryIterator(Iterator<Map.Entry<K, V>> backingIterator) {
this.backingIterator = backingIterator;
}
private void findNext() {
if (next != null) {
return;
}
next = peek;
peek = null;
while (backingIterator.hasNext()) {
peek = backingIterator.next();
if (next == null || peek.getKey().equals(next.getKey())) {
next = peek;
peek = null;
} else {
break;
}
}
}
@Override
public boolean hasNext() {
findNext();
return next != null;
}
@Override
public Map.Entry<K, V> next() {
findNext();
Map.Entry<K, V> got = next;
next = null;
return got;
}
@Override
public void remove() {
throw new UnsupportedOperationException("Nope");
}
}