LUCENE-3312: Small refctoring and final field

git-svn-id: https://svn.apache.org/repos/asf/lucene/dev/branches/lucene3312@1374710 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Uwe Schindler 2012-08-19 08:45:25 +00:00
parent 36014af614
commit ca1059f194
1 changed files with 18 additions and 19 deletions

View File

@ -22,41 +22,40 @@ import java.util.NoSuchElementException;
public abstract class FilterIterator<T> implements Iterator<T> {
private Iterator<T> iterator;
private final Iterator<T> iterator;
private T next = null;
private boolean nextIsSet = false;
protected abstract boolean predicateFunction(T field);
protected abstract boolean predicateFunction(T object);
public FilterIterator(Iterator<T> baseIterator) {
this.iterator = baseIterator;
}
public boolean hasNext() {
if (nextIsSet) {
return true;
} else {
return setNext();
public final boolean hasNext() {
return nextIsSet || setNext();
}
public final T next() {
if (!hasNext()) {
throw new NoSuchElementException();
}
assert nextIsSet;
try {
return next;
} finally {
nextIsSet = false;
next = null;
}
}
public T next() {
if (!nextIsSet) {
if (!setNext()) {
throw new NoSuchElementException();
}
}
nextIsSet = false;
return next;
}
public void remove() {
public final void remove() {
throw new UnsupportedOperationException();
}
private boolean setNext() {
while (iterator.hasNext()) {
T object = iterator.next();
final T object = iterator.next();
if (predicateFunction(object)) {
next = object;
nextIsSet = true;