common
Class AddedTupleIterator
java.lang.Object
common.AddedTupleIterator
- All Implemented Interfaces:
- java.util.Iterator
public class AddedTupleIterator
- extends java.lang.Object
- implements java.util.Iterator
Class for iterating over tuples that are added to the Cartesian product
A_1 x A_2 x ... x A_n when the original collections A_1, ..., A_n are
augmented with additional collections B_1, ..., B_n. In mathematical
notation (with "u" for the union symbol), the iteration is over:
((A_1 u B_1) x ... x (A_n u B_n)) - (A_1 x ... x A_n)
We assume that A_i and B_i are disjoint.
The trick is to partition the "added" tuples according to the
index where we first encounter an added element. The set of tuples
where the first added element occurs at index i is the Cartesian
product:
A_1 x ... x A_{i-1} x B_i x (A_{i+1} u B_{i+1}) x ... x (A_n u B_n)
So overall, we just need to iterate over the (disjoint) union of
such Cartesian products for i = 1 to n.
Constructor Summary |
AddedTupleIterator(java.util.List orig,
java.util.List added)
Creates a new iterator over tuples that are added to the Cartesian
product when the collections in orig are augmented with
the corresponding collections in added . |
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
AddedTupleIterator
public AddedTupleIterator(java.util.List orig,
java.util.List added)
- Creates a new iterator over tuples that are added to the Cartesian
product when the collections in
orig
are augmented with
the corresponding collections in added
.
- Parameters:
orig
- List of Collectionadded
- List of Collection
- Throws:
java.lang.IllegalArgumentException
- if orig
and
added
have different sizes
hasNext
public boolean hasNext()
- Specified by:
hasNext
in interface java.util.Iterator
next
public java.lang.Object next()
- Specified by:
next
in interface java.util.Iterator
remove
public void remove()
- Specified by:
remove
in interface java.util.Iterator