Class CollatingIterator<E>

  • All Implemented Interfaces:
    Iterator<E>

    public class CollatingIterator<E>
    extends Object
    implements Iterator<E>
    Provides an ordered iteration over the elements contained in a collection of ordered Iterators.

    Given two ordered Iterator instances A and B, the next() method on this iterator will return the lesser of A.next() and B.next().

    Since:
    2.1
    • Constructor Detail

      • CollatingIterator

        public CollatingIterator​(Comparator<? super E> comp)
        Constructs a new CollatingIterator that will used the specified comparator for ordering. Child iterators will have to be manually added using the addIterator(Iterator) method.
        Parameters:
        comp - the comparator to use to sort; must not be null, unless you'll be invoking setComparator(Comparator) later on.
      • CollatingIterator

        public CollatingIterator​(Comparator<? super E> comp,
                                 int initIterCapacity)
        Constructs a new 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.
        Parameters:
        comp - the comparator to use to sort; must not be null, unless you'll be invoking setComparator(Comparator) later on.
        initIterCapacity - the initial capacity for the internal list of child iterators
      • CollatingIterator

        public CollatingIterator​(Comparator<? super E> comp,
                                 Iterator<? extends E> a,
                                 Iterator<? extends E> b)
        Constructs a new CollatingIterator that will use the specified comparator to provide ordered iteration over the two given iterators.
        Parameters:
        comp - the comparator to use to sort; must not be null, unless you'll be invoking setComparator(Comparator) later on.
        a - the first child ordered iterator
        b - the second child ordered iterator
        Throws:
        NullPointerException - if either iterator is null
      • CollatingIterator

        public CollatingIterator​(Comparator<? super E> comp,
                                 Iterator<? extends E>[] iterators)
        Constructs a new CollatingIterator that will use the specified comparator to provide ordered iteration over the array of iterators.
        Parameters:
        comp - the comparator to use to sort; must not be null, unless you'll be invoking setComparator(Comparator) later on.
        iterators - the array of iterators
        Throws:
        NullPointerException - if iterators array is or contains null
      • CollatingIterator

        public CollatingIterator​(Comparator<? super E> comp,
                                 Collection<Iterator<? extends E>> iterators)
        Constructs a new CollatingIterator that will use the specified comparator to provide ordered iteration over the collection of iterators.
        Parameters:
        comp - the comparator to use to sort; must not be null, unless you'll be invoking setComparator(Comparator) later on.
        iterators - the collection of iterators
        Throws:
        NullPointerException - if the iterators collection is or contains null
        ClassCastException - if the iterators collection contains an element that's not an Iterator
    • Method Detail

      • addIterator

        public void addIterator​(Iterator<? extends E> iterator)
        Adds the given Iterator to the iterators being collated.
        Parameters:
        iterator - the iterator to add to the collation, must not be null
        Throws:
        IllegalStateException - if iteration has started
        NullPointerException - if the iterator is null
      • setIterator

        public void setIterator​(int index,
                                Iterator<? extends E> iterator)
        Sets the iterator at the given index.
        Parameters:
        index - index of the Iterator to replace
        iterator - Iterator to place at the given index
        Throws:
        IndexOutOfBoundsException - if index < 0 or index > size()
        IllegalStateException - if iteration has started
        NullPointerException - if the iterator is null
      • getIterators

        public List<Iterator<? extends E>> getIterators()
        Gets the list of Iterators (unmodifiable).
        Returns:
        the unmodifiable list of iterators added
      • hasNext

        public boolean hasNext()
        Returns true if any child iterator has remaining elements.
        Specified by:
        hasNext in interface Iterator<E>
        Returns:
        true if this iterator has remaining elements
      • remove

        public void remove()
        Removes the last returned element from the child iterator that produced it.
        Specified by:
        remove in interface Iterator<E>
        Throws:
        IllegalStateException - if there is no last returned element, or if the last returned element has already been removed
      • getIteratorIndex

        public int getIteratorIndex()
        Returns the index of the iterator that returned the last element.
        Returns:
        the index of the iterator that returned the last element
        Throws:
        IllegalStateException - if there is no last returned element