public class CollatingIterator
extends java.lang.Object
implements java.util.Iterator
Given two ordered Iterator instances A and B,
the next() method on this iterator will return the lesser of
A.next() and B.next().
| Modifier and Type | Field and Description |
|---|---|
private java.util.Comparator |
comparator
The
Comparator used to evaluate order. |
private java.util.ArrayList |
iterators
The list of
Iterators to evaluate. |
private int |
lastReturned
Index of the
iterator from whom the last returned value was obtained. |
private java.util.ArrayList |
values
Next objects peeked from each iterator. |
private java.util.BitSet |
valueSet
Whether or not each
values element has been set. |
| Constructor and Description |
|---|
CollatingIterator()
Constructs a new
CollatingIterator. |
CollatingIterator(java.util.Comparator comp)
Constructs a new
CollatingIterator that will used the
specified comparator for ordering. |
CollatingIterator(java.util.Comparator comp,
java.util.Collection iterators)
Constructs a new
CollatingIterator that will use the
specified comparator to provide ordered iteration over the collection
of iterators. |
CollatingIterator(java.util.Comparator comp,
int initIterCapacity)
Constructs a new
CollatingIterator that will used the
specified comparator for ordering and have the specified initial
capacity. |
CollatingIterator(java.util.Comparator comp,
java.util.Iterator[] iterators)
Constructs a new
CollatingIterator that will use the
specified comparator to provide ordered iteration over the array
of iterators. |
CollatingIterator(java.util.Comparator comp,
java.util.Iterator a,
java.util.Iterator b)
Constructs a new
CollatingIterator that will use the
specified comparator to provide ordered iteration over the two
given iterators. |
| Modifier and Type | Method and Description |
|---|---|
void |
addIterator(java.util.Iterator iterator)
Adds the given
Iterator to the iterators being collated. |
private boolean |
anyHasNext(java.util.ArrayList iters)
Returns
true iff any Iterator
in the given list has a next value. |
private boolean |
anyValueSet(java.util.BitSet set)
Returns
true iff any bit in the given set is
true. |
private void |
checkNotStarted()
Throws
IllegalStateException if iteration has started
via start(). |
private void |
clear(int i)
|
java.util.Comparator |
getComparator()
Gets the
Comparator by which collatation occurs. |
java.util.List |
getIterators()
Gets the list of Iterators (unmodifiable).
|
boolean |
hasNext()
Returns
true if any child iterator has remaining elements. |
private int |
least()
|
java.lang.Object |
next()
Returns the next ordered element from a child iterator.
|
void |
remove()
Removes the last returned element from the child iterator that
produced it.
|
private boolean |
set(int i)
|
void |
setComparator(java.util.Comparator comp)
Sets the
Comparator by which collation occurs. |
void |
setIterator(int index,
java.util.Iterator iterator)
Sets the iterator at the given index.
|
private void |
start()
Initializes the collating state if it hasn't been already.
|
private java.util.Comparator comparator
Comparator used to evaluate order.private java.util.ArrayList iterators
Iterators to evaluate.private java.util.ArrayList values
Next objects peeked from each iterator.private java.util.BitSet valueSet
values element has been set.private int lastReturned
iterator from whom the last returned value was obtained.public CollatingIterator()
CollatingIterator. Natural sort order
will be used, and child iterators will have to be manually added
using the addIterator(Iterator) method.public CollatingIterator(java.util.Comparator comp)
CollatingIterator that will used the
specified comparator for ordering. Child iterators will have to be
manually added using the addIterator(Iterator) method.comp - the comparator to use to sort, or null to use natural sort orderpublic CollatingIterator(java.util.Comparator comp,
int initIterCapacity)
CollatingIterator that will used the
specified comparator for ordering and have the specified initial
capacity. Child iterators will have to be
manually added using the addIterator(Iterator) method.comp - the comparator to use to sort, or null to use natural sort orderinitIterCapacity - the initial capacity for the internal list
of child iteratorspublic CollatingIterator(java.util.Comparator comp,
java.util.Iterator a,
java.util.Iterator b)
CollatingIterator that will use the
specified comparator to provide ordered iteration over the two
given iterators.comp - the comparator to use to sort, or null to use natural sort ordera - the first child ordered iteratorb - the second child ordered iteratorjava.lang.NullPointerException - if either iterator is nullpublic CollatingIterator(java.util.Comparator comp,
java.util.Iterator[] iterators)
CollatingIterator that will use the
specified comparator to provide ordered iteration over the array
of iterators.comp - the comparator to use to sort, or null to use natural sort orderiterators - the array of iteratorsjava.lang.NullPointerException - if iterators array is or contains nullpublic CollatingIterator(java.util.Comparator comp,
java.util.Collection iterators)
CollatingIterator that will use the
specified comparator to provide ordered iteration over the collection
of iterators.comp - the comparator to use to sort, or null to use natural sort orderiterators - the collection of iteratorsjava.lang.NullPointerException - if the iterators collection is or contains nulljava.lang.ClassCastException - if the iterators collection contains an
element that's not an Iteratorpublic void addIterator(java.util.Iterator iterator)
Iterator to the iterators being collated.iterator - the iterator to add to the collation, must not be nulljava.lang.IllegalStateException - if iteration has startedjava.lang.NullPointerException - if the iterator is nullpublic void setIterator(int index,
java.util.Iterator iterator)
index - index of the Iterator to replaceiterator - Iterator to place at the given indexjava.lang.IndexOutOfBoundsException - if index < 0 or index > size()java.lang.IllegalStateException - if iteration has startedjava.lang.NullPointerException - if the iterator is nullpublic java.util.List getIterators()
public java.util.Comparator getComparator()
Comparator by which collatation occurs.public void setComparator(java.util.Comparator comp)
Comparator by which collation occurs.java.lang.IllegalStateException - if iteration has startedpublic boolean hasNext()
true if any child iterator has remaining elements.hasNext in interface java.util.Iteratorpublic java.lang.Object next()
throws java.util.NoSuchElementException
next in interface java.util.Iteratorjava.util.NoSuchElementException - if no child iterator has any more elementspublic void remove()
remove in interface java.util.Iteratorjava.lang.IllegalStateException - if there is no last returned element,
or if the last returned element has already been removedprivate void start()
private boolean set(int i)
values and valueSet attributes
at position i to the next value of the
iterator at position i, or
clear them if the ith iterator
has no next value.private void clear(int i)
private void checkNotStarted()
throws java.lang.IllegalStateException
IllegalStateException if iteration has started
via start().java.lang.IllegalStateException - if iteration startedprivate int least()
java.lang.IllegalStateExceptionprivate boolean anyValueSet(java.util.BitSet set)
true iff any bit in the given set is
true.private boolean anyHasNext(java.util.ArrayList iters)
true iff any Iterator
in the given list has a next value.