Class FilterIterator<E>

  • Type Parameters:
    E - the type of elements returned by this iterator.
    All Implemented Interfaces:
    java.util.Iterator<E>, IteratorOperations<E>
    Direct Known Subclasses:
    UniqueFilterIterator

    public class FilterIterator<E>
    extends java.lang.Object
    implements IteratorOperations<E>
    Decorates an Iterator using an optional predicate to filter elements.

    This iterator decorates the underlying iterator, only allowing through those elements that match the specified Predicate.

    Since:
    1.0
    • Constructor Summary

      Constructors 
      Constructor Description
      FilterIterator()
      Constructs a new FilterIterator that will not function until setIterator is invoked.
      FilterIterator​(java.util.Iterator<? extends E> iterator)
      Constructs a new FilterIterator that will not function until setPredicate is invoked.
      FilterIterator​(java.util.Iterator<? extends E> iterator, Predicate<? super E> predicate)
      Constructs a new FilterIterator that will use the given iterator and predicate.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      java.util.Iterator<? extends E> getIterator()
      Gets the iterator this iterator is using.
      Predicate<? super E> getPredicate()
      Gets the predicate this iterator is using.
      boolean hasNext()
      Returns true if the underlying iterator contains an object that matches the predicate.
      E next()
      Returns the next object that matches the predicate.
      void remove()
      Removes from the underlying collection of the base iterator the last element returned by this iterator.
      void setIterator​(java.util.Iterator<? extends E> iterator)
      Sets the iterator for this iterator to use.
      void setPredicate​(Predicate<? super E> predicate)
      Sets the predicate this the iterator to use where null accepts all values.
      • Methods inherited from class java.lang.Object

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

        forEachRemaining
    • Constructor Detail

      • FilterIterator

        public FilterIterator()
        Constructs a new FilterIterator that will not function until setIterator is invoked.
      • FilterIterator

        public FilterIterator​(java.util.Iterator<? extends E> iterator)
        Constructs a new FilterIterator that will not function until setPredicate is invoked.
        Parameters:
        iterator - the iterator to use
      • FilterIterator

        public FilterIterator​(java.util.Iterator<? extends E> iterator,
                              Predicate<? super E> predicate)
        Constructs a new FilterIterator that will use the given iterator and predicate.
        Parameters:
        iterator - the iterator to use
        predicate - the predicate to use, null accepts all values.
    • Method Detail

      • getIterator

        public java.util.Iterator<? extends EgetIterator()
        Gets the iterator this iterator is using.
        Returns:
        the underlying iterator.
      • getPredicate

        public Predicate<? super EgetPredicate()
        Gets the predicate this iterator is using.
        Returns:
        the filtering predicate.
      • hasNext

        public boolean hasNext()
        Returns true if the underlying iterator contains an object that matches the predicate.
        Specified by:
        hasNext in interface java.util.Iterator<E>
        Returns:
        true if there is another object that matches the predicate
        Throws:
        java.lang.NullPointerException - if either the iterator or predicate are null
      • next

        public E next()
        Returns the next object that matches the predicate.
        Specified by:
        next in interface java.util.Iterator<E>
        Returns:
        the next object which matches the given predicate
        Throws:
        java.lang.NullPointerException - if either the iterator or predicate are null
        java.util.NoSuchElementException - if there are no more elements that match the predicate
      • remove

        public void remove()
        Removes from the underlying collection of the base iterator the last element returned by this iterator. This method can only be called if next() was called, but not after hasNext(), because the hasNext() call changes the base iterator.
        Specified by:
        remove in interface java.util.Iterator<E>
        Throws:
        java.lang.IllegalStateException - if hasNext() has already been called.
      • setIterator

        public void setIterator​(java.util.Iterator<? extends E> iterator)
        Sets the iterator for this iterator to use. If iteration has started, this effectively resets the iterator.
        Parameters:
        iterator - the iterator to use
      • setPredicate

        public void setPredicate​(Predicate<? super E> predicate)
        Sets the predicate this the iterator to use where null accepts all values.
        Parameters:
        predicate - the predicate to use, null accepts all values.