| 1 33 package net.sf.jga.util; 34 35 import java.util.Iterator ; 36 import java.util.NoSuchElementException ; 37 import net.sf.jga.fn.UnaryFunctor; 38 39 49 50 public class FindAllIterator<T> 51 implements Iterable <Iterator <? extends T>>, Iterator <Iterator <? extends T>> 52 { 53 54 private Iterator <? extends T> _iter; 56 57 private UnaryFunctor<Iterator <? extends T>, ? extends Iterator <T>> _fn; 59 60 private Boolean _tested; 62 63 67 public FindAllIterator(Iterator <? extends T> it, 68 UnaryFunctor<Iterator <? extends T>,? extends Iterator <T>> fn) 69 { 70 _iter = it; 71 _fn = fn; 72 } 73 74 78 public Iterator <Iterator <? extends T>> iterator() { return this; } 79 80 84 public boolean hasNext() { 85 _iter = _fn.fn(_iter); 86 _tested = Boolean.valueOf(_iter.hasNext()); 87 return _tested; 88 } 89 90 public Iterator <? extends T> next() { 91 if (_tested == null) 92 hasNext(); 93 94 if (!_tested) 95 throw new NoSuchElementException (); 96 97 _tested = null; 98 return _iter; 99 } 100 101 public void remove() { 102 _iter.remove(); 103 } 104 } 105 | Popular Tags |