Rename pimstuff -> jpim and move to Maven
[jpim.git] / src / main / java / de / j32 / util / FilteredIterator.java
diff --git a/src/main/java/de/j32/util/FilteredIterator.java b/src/main/java/de/j32/util/FilteredIterator.java
new file mode 100644 (file)
index 0000000..585a537
--- /dev/null
@@ -0,0 +1,50 @@
+package de.j32.util;
+
+import java.util.Iterator;
+import java.util.NoSuchElementException;
+
+public class FilteredIterator<E> implements Iterator<E>
+{
+    Iterator<E> base_;
+    Filter<E> filter_;
+    E next_;
+    boolean hasNext_ = true;
+
+    public FilteredIterator(Iterator<E> base, Filter<E> filter)
+    {
+        base_ = base;
+        filter_ = filter;
+        advance();
+    }
+
+    public E next()
+    {
+        if (hasNext_) {
+            E rv = next_;
+            advance();
+            return rv;
+        }
+        else throw new NoSuchElementException();
+    }
+
+    public boolean hasNext()
+    {
+        return hasNext_;
+    }
+
+    public void remove()
+    {
+        throw new UnsupportedOperationException();
+    }
+
+    void advance()
+    {
+        while (base_.hasNext()) {
+            next_ = base_.next();
+            if (filter_.match(next_)) return;
+        }
+        hasNext_ = false;
+        next_ = null;
+    }
+
+}