KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > uk > co > jezuk > mango > iterators > SkippingIterator


1 package uk.co.jezuk.mango.iterators;
2
3 /**
4  * A <code>SkippingIterator</code> enumerates a sequence,
5  * stepping over the elements
6  * that match the supplied <code>Predicate</code>.
7  *
8  * @see PredicatedIterator
9  * @author Jez Higgins, jez@jezuk.co.uk
10  * @version $Id: SkippingIterator.java 95 2004-05-25 20:56:38Z jez $
11  */

12 public class SkippingIterator implements java.util.Iterator JavaDoc
13 {
14   public SkippingIterator(java.util.Iterator JavaDoc iterator, uk.co.jezuk.mango.Predicate predicate)
15   {
16     iter_ = iterator;
17     pred_ = predicate;
18
19     findNext();
20   } // SkippingIterator
21

22   public boolean hasNext()
23   {
24     return (next_ != null);
25   } // hasNext
26

27   public Object JavaDoc next()
28   {
29     Object JavaDoc current = next_;
30     findNext();
31     return current;
32   } // next
33

34   public void remove()
35   {
36     throw new UnsupportedOperationException JavaDoc("uk.co.jezuk.mango.SkippingIterator does not support the remove method");
37   } // remove
38

39   private void findNext()
40   {
41     next_ = null;
42     while(iter_.hasNext() && next_ == null)
43     {
44       Object JavaDoc candidate = iter_.next();
45       if(!pred_.test(candidate))
46         next_ = candidate;
47     } // while
48
} // findNext
49

50   ////////////////////////
51
private java.util.Iterator JavaDoc iter_;
52   private uk.co.jezuk.mango.Predicate pred_;
53   private Object JavaDoc next_;
54 } // SkippingIterator
55

56
57
Popular Tags