01: package uk.co.jezuk.mango.iterators;
02:
03: /**
04: * A <code>SelectingIterator</code> enumerates only those elements of a collection
05: * that match the supplied <code>Predicate</code>.
06: *
07: * @author Jez Higgins, jez@jezuk.co.uk
08: * @version $Id: SelectingIterator.java 116 2006-09-29 09:56:09Z jez $
09: */
10: public class SelectingIterator implements java.util.Iterator {
11: public SelectingIterator(java.util.Iterator iterator,
12: uk.co.jezuk.mango.Predicate predicate) {
13: iter_ = iterator;
14: pred_ = predicate;
15: } // SelectingIterator
16:
17: public boolean hasNext() {
18: next_ = null;
19: while (iter_.hasNext() && next_ == null) {
20: Object candidate = iter_.next();
21: if (pred_.test(candidate))
22: next_ = candidate;
23: } // while
24: return next_ != null;
25: } // hasNext
26:
27: public Object next() {
28: return next_;
29: } // next
30:
31: public void remove() {
32: iter_.remove();
33: } // remove
34:
35: ////////////////////////
36: private java.util.Iterator iter_;
37: private uk.co.jezuk.mango.Predicate pred_;
38: private Object next_;
39: } // SelectingIterator
|