public class PrefetchIterator<E> extends Object implements Iterator<E>, Enumeration<E>
Many classes which implement an iterator face a common problem: if there is no easy way to calculate hasNext() other than to call getNext(), then they save the result for fetching in the next call to getNext(). This utility helps in doing just that.
Usage: The new iterator class will hold this class as a member variable and forward the hasNext() and next() to it. When creating an instance of this class, you supply it with a functor that is doing the real job of calculating the next element.
//This class supllies enumeration of integer till 100.
public class IteratorExample implements Enumeration{
private int counter=0;
private PrefetchIterator nextSupplier;
IteratorExample()
{
nextSupplier = new PrefetchIterator(new PrefetchIterator.NextElementFunctor(){
public Object nextElement() throws NoSuchElementException {
counter++;
if (counter <= 100)
throw new NoSuchElementException();
else
return new Integer(counter);
}
});
}
//forwarding to nextSupplier and return its returned value
public boolean hasMoreElements() {
return this.nextSupplier.hasMoreElements();
}
// forwarding to nextSupplier and return its returned value
public Object nextElement() {
return this.nextSupplier.nextElement();
}
}
Modifier and Type | Class and Description |
---|---|
static interface |
PrefetchIterator.NextElementFunctor<EE> |
Constructor and Description |
---|
PrefetchIterator(PrefetchIterator.NextElementFunctor<E> aEnum) |
Modifier and Type | Method and Description |
---|---|
boolean |
hasMoreElements()
If (isGetNextLastResultUpToDate==true) returns true else 1.
|
boolean |
hasNext() |
boolean |
isEnumerationStartedEmpty()
Tests whether the enumeration started as an empty one.
|
E |
next() |
E |
nextElement()
1.
|
void |
remove()
Always throws UnsupportedOperationException.
|
public PrefetchIterator(PrefetchIterator.NextElementFunctor<E> aEnum)
public E nextElement()
nextElement
in interface Enumeration<E>
public boolean hasMoreElements()
hasMoreElements
in interface Enumeration<E>
public boolean isEnumerationStartedEmpty()
public void remove() throws UnsupportedOperationException
remove
in interface Iterator<E>
UnsupportedOperationException
Copyright © 2016. All rights reserved.