org.apache.commons.collections4.iterators

## Class FilterIterator<E>

- java.lang.Object
- - org.apache.commons.collections4.iterators.FilterIterator<E>

- All Implemented Interfaces:
    Iterator<E>
  Direct Known Subclasses:
    UniqueFilterIterator

      public class FilterIterator<E>
      extends Object
      implements Iterator<E>

  Decorates another `Iterator` using a predicate to filter elements.

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

  Since:
    1.0
  Version:
    $Id: FilterIterator.java 1477802 2013-04-30 20:01:28Z tn $

- - ### Constructor Summary

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

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `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(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.

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### FilterIterator

          public FilterIterator()

      Constructs a new `FilterIterator` that will not function until `setIterator` is invoked.

    - #### FilterIterator

          public FilterIterator(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(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

  - ### Method Detail

    - #### hasNext

          public boolean hasNext()

      Returns true if the underlying iterator contains an object that matches the predicate.
      Specified by:
        `hasNext` in interface `Iterator<E>`
      Returns:
        true if there is another object that matches the predicate
      Throws:
        `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 `Iterator<E>`
      Returns:
        the next object which matches the given predicate
      Throws:
        `NullPointerException` - if either the iterator or predicate are null
        `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 `Iterator<E>`
      Throws:
        `IllegalStateException` - if `hasNext()` has already been called.

    - #### getIterator

          public Iterator<? extends E> getIterator()

      Gets the iterator this iterator is using.
      Returns:
        the iterator

    - #### setIterator

          public void setIterator(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

    - #### getPredicate

          public Predicate<? super E> getPredicate()

      Gets the predicate this iterator is using.
      Returns:
        the predicate

    - #### setPredicate

          public void setPredicate(Predicate<? super E> predicate)

      Sets the predicate this the iterator to use.
      Parameters:
        `predicate` - the predicate to use

Copyright © 2001–2015 The Apache Software Foundation. All rights reserved.