## org.apache.commons.collections.iterators
Class FilterIterator

    java.lang.Object
      org.apache.commons.collections.iterators.FilterIterator

All Implemented Interfaces:
  java.util.Iterator

Direct Known Subclasses:
  UniqueFilterIterator

    public class FilterIterator

extends java.lang.Object
implements java.util.Iterator

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:
  Commons Collections 1.0
Version:
  $Revision: 646777 $ $Date: 2008-04-10 13:33:15 +0100 (Thu, 10 Apr 2008) $
Author:
  James Strachan, Jan Sorensen, Ralph Wagner, Stephen Colebourne

Constructor Summary
`FilterIterator()` Constructs a new `FilterIterator` that will not function until `setIterator` is invoked.
`FilterIterator(java.util.Iterator iterator)` Constructs a new `FilterIterator` that will not function until `setPredicate` is invoked.
`FilterIterator(java.util.Iterator iterator, Predicate predicate)` Constructs a new `FilterIterator` that will use the given iterator and predicate.

Method Summary
`java.util.Iterator` `getIterator()` Gets the iterator this iterator is using.
`Predicate` `getPredicate()` Gets the predicate this iterator is using.
`boolean` `hasNext()` Returns true if the underlying iterator contains an object that matches the predicate.
`java.lang.Object` `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 iterator)` Sets the iterator for this iterator to use.
`void` `setPredicate(Predicate 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(java.util.Iterator 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 iterator,
                          Predicate 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 `java.util.Iterator`
  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 java.lang.Object next()

  Returns the next object that matches the predicate.

  Specified by:
    `next` in interface `java.util.Iterator`
  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`
  Throws:
    `java.lang.IllegalStateException` - if `hasNext()` has already been called.

### getIterator

    public java.util.Iterator getIterator()

  Gets the iterator this iterator is using.

  Returns:
    the iterator

### setIterator

    public void setIterator(java.util.Iterator 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 getPredicate()

  Gets the predicate this iterator is using.

  Returns:
    the predicate

### setPredicate

    public void setPredicate(Predicate predicate)

  Sets the predicate this the iterator to use.

  Parameters:
    `predicate` - the predicate to use

Copyright © 2001-2008 The Apache Software Foundation. All Rights Reserved.