org.iq80.leveldb.util.AbstractSeekingIterator Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of SWBTripleStoreLevelDB Show documentation
Show all versions of SWBTripleStoreLevelDB Show documentation
TripleStore implementation for SemanticWebBuilder using LevelDB
The newest version!
package org.iq80.leveldb.util;
import org.iq80.leveldb.impl.SeekingIterator;
import java.util.Map.Entry;
import java.util.NoSuchElementException;
public abstract class AbstractSeekingIterator implements SeekingIterator
{
private Entry nextElement;
@Override
public final void seekToFirst()
{
nextElement = null;
seekToFirstInternal();
}
@Override
public final void seek(K targetKey)
{
nextElement = null;
seekInternal(targetKey);
}
@Override
public final boolean hasNext()
{
if (nextElement == null) {
nextElement = getNextElement();
}
return nextElement != null;
}
@Override
public final Entry next()
{
if (nextElement == null) {
nextElement = getNextElement();
if (nextElement == null) {
throw new NoSuchElementException();
}
}
Entry result = nextElement;
nextElement = null;
return result;
}
@Override
public final Entry peek()
{
if (nextElement == null) {
nextElement = getNextElement();
if (nextElement == null) {
throw new NoSuchElementException();
}
}
return nextElement;
}
@Override
public final void remove()
{
throw new UnsupportedOperationException();
}
protected abstract void seekToFirstInternal();
protected abstract void seekInternal(K targetKey);
protected abstract Entry getNextElement();
}