Class ZippingIterator<E>

  • All Implemented Interfaces:
    java.util.Iterator<E>

    public class ZippingIterator<E>
    extends java.lang.Object
    implements java.util.Iterator<E>
    Provides an interleaved iteration over the elements contained in a collection of Iterators.

    Given two Iterator instances A and B, the next() method on this iterator will switch between A.next() and B.next() until both iterators are exhausted.

    Since:
    4.1
    • Constructor Summary

      Constructors 
      Constructor Description
      ZippingIterator​(java.util.Iterator<? extends E>... iterators)
      Constructs a new ZippingIterator that will provide interleaved iteration of the specified iterators.
      ZippingIterator​(java.util.Iterator<? extends E> a, java.util.Iterator<? extends E> b)
      Constructs a new ZippingIterator that will provide interleaved iteration over the two given iterators.
      ZippingIterator​(java.util.Iterator<? extends E> a, java.util.Iterator<? extends E> b, java.util.Iterator<? extends E> c)
      Constructs a new ZippingIterator that will provide interleaved iteration over the three given iterators.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      boolean hasNext()
      Returns true if any child iterator has remaining elements.
      E next()
      Returns the next element from a child iterator.
      void remove()
      Removes the last returned element from the child iterator that produced it.
      • Methods inherited from class java.lang.Object

        equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • Methods inherited from interface java.util.Iterator

        forEachRemaining
    • Constructor Detail

      • ZippingIterator

        public ZippingIterator​(java.util.Iterator<? extends E> a,
                               java.util.Iterator<? extends E> b)
        Constructs a new ZippingIterator that will provide interleaved iteration over the two given iterators.
        Parameters:
        a - the first child iterator
        b - the second child iterator
        Throws:
        java.lang.NullPointerException - if either iterator is null
      • ZippingIterator

        public ZippingIterator​(java.util.Iterator<? extends E> a,
                               java.util.Iterator<? extends E> b,
                               java.util.Iterator<? extends E> c)
        Constructs a new ZippingIterator that will provide interleaved iteration over the three given iterators.
        Parameters:
        a - the first child iterator
        b - the second child iterator
        c - the third child iterator
        Throws:
        java.lang.NullPointerException - if either iterator is null
      • ZippingIterator

        public ZippingIterator​(java.util.Iterator<? extends E>... iterators)
        Constructs a new ZippingIterator that will provide interleaved iteration of the specified iterators.
        Parameters:
        iterators - the array of iterators
        Throws:
        java.lang.NullPointerException - if any iterator is null
    • Method Detail

      • hasNext

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

        public E next()
               throws java.util.NoSuchElementException
        Returns the next element from a child iterator.
        Specified by:
        next in interface java.util.Iterator<E>
        Returns:
        the next interleaved element
        Throws:
        java.util.NoSuchElementException - if no child iterator has any more elements
      • remove

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