|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectorg.drools.util.IteratorChain
An IteratorChain is an Iterator that wraps a number of Iterators.
This class makes multiple iterators look like one to the caller When any method from the Iterator interface is called, the IteratorChain will delegate to a single underlying Iterator. The IteratorChain will invoke the Iterators in sequence until all Iterators are exhausted.
Under many circumstances, linking Iterators together in this manner is more efficient (and convenient) than reading out the contents of each Iterator into a List and creating a new Iterator.
Calling a method that adds new Iterator after a method in the Iterator interface has been called will result in an UnsupportedOperationException. Subclasses should take care to not alter the underlying List of Iterators.
NOTE: As from version 3.0, the IteratorChain may contain no iterators. In this case the class will function as an empty iterator.
Field Summary | |
protected java.util.Iterator |
currentIterator
The current iterator |
protected int |
currentIteratorIndex
The index of the current iterator |
protected boolean |
isLocked
ComparatorChain is "locked" after the first time compare(Object,Object) is called |
protected java.util.List |
iteratorChain
The chain of iterators |
protected java.util.Iterator |
lastUsedIterator
The "last used" Iterator is the Iterator upon which next() or hasNext() was most recently called used for the remove() operation only |
Constructor Summary | |
IteratorChain()
Construct an IteratorChain with no Iterators. |
|
IteratorChain(java.util.Collection iterators)
Constructs a new IteratorChain over the collection of
iterators. |
|
IteratorChain(java.util.Iterator iterator)
Construct an IteratorChain with a single Iterator. |
|
IteratorChain(java.util.Iterator[] iterators)
Constructs a new IteratorChain over the array of
iterators. |
|
IteratorChain(java.util.Iterator a,
java.util.Iterator b)
Constructs a new IteratorChain over the two given
iterators. |
Method Summary | |
void |
addIterator(java.util.Iterator iterator)
Add an Iterator to the end of the chain |
java.util.List |
getIterators()
Get the list of Iterators (unmodifiable) |
boolean |
hasNext()
Return true if any Iterator in the IteratorChain has a remaining element. |
boolean |
isLocked()
Determine if modifications can still be made to the IteratorChain. |
java.lang.Object |
next()
Returns the next Object of the current Iterator |
void |
remove()
Removes from the underlying collection the last element returned by the Iterator. |
void |
setIterator(int index,
java.util.Iterator iterator)
Set the Iterator at the given index |
int |
size()
Number of Iterators in the current IteratorChain. |
protected void |
updateCurrentIterator()
Updates the current iterator field to ensure that the current Iterator is not exhausted |
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
protected final java.util.List iteratorChain
protected int currentIteratorIndex
protected java.util.Iterator currentIterator
protected java.util.Iterator lastUsedIterator
protected boolean isLocked
Constructor Detail |
public IteratorChain()
You will normally use IteratorChain.addIterator(Iterator)
to add some
iterators after using this constructor.
public IteratorChain(java.util.Iterator iterator)
java.lang.NullPointerException
- if the iterator is nulliterator
- first Iterator in the IteratorChainpublic IteratorChain(java.util.Iterator a, java.util.Iterator b)
IteratorChain
over the two given
iterators.
java.lang.NullPointerException
- if either iterator is nulla
- the first child iteratorb
- the second child iteratorpublic IteratorChain(java.util.Iterator[] iterators)
IteratorChain
over the array of
iterators.
java.lang.NullPointerException
- if iterators array is or contains nulliterators
- the array of iteratorspublic IteratorChain(java.util.Collection iterators)
IteratorChain
over the collection of
iterators.
java.lang.NullPointerException
- if iterators collection is or contains null
java.lang.ClassCastException
- if iterators collection doesn't contain an iteratoriterators
- the collection of iteratorsMethod Detail |
public void addIterator(java.util.Iterator iterator)
java.lang.IllegalStateException
- if I've already started iterating
java.lang.NullPointerException
- if the iterator is nulliterator
- Iterator to addpublic void setIterator(int index, java.util.Iterator iterator) throws java.lang.IndexOutOfBoundsException
java.lang.IndexOutOfBoundsException
- if index < 0 or index > size()
java.lang.IllegalStateException
- if I've already started iterating
java.lang.NullPointerException
- if the iterator is nullindex
- index of the Iterator to replaceiterator
- Iterator to place at the given indexpublic java.util.List getIterators()
public int size()
public boolean isLocked()
protected void updateCurrentIterator()
public boolean hasNext()
hasNext
in interface java.util.Iterator
public java.lang.Object next()
next
in interface java.util.Iterator
java.util.NoSuchElementException
- if all the Iterators are exhausted
public void remove()
remove
in interface java.util.Iterator
java.lang.UnsupportedOperationException
- if the remove operator is not supported by the underlying
Iterator
java.lang.IllegalStateException
- if the next method has not yet been called, or the remove
method has already been called after the last call to the
next method.
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |