checkpoint
[sbp.git] / src / edu / berkeley / sbp / util / ConcatenateIterator.java
diff --git a/src/edu/berkeley/sbp/util/ConcatenateIterator.java b/src/edu/berkeley/sbp/util/ConcatenateIterator.java
new file mode 100644 (file)
index 0000000..d936189
--- /dev/null
@@ -0,0 +1,18 @@
+package edu.berkeley.sbp.util;
+import java.util.*;
+
+public final class ConcatenateIterator<T> implements Iterator<T>, Iterable<T> {
+
+    private Iterator<T> i1;
+    private Iterator<T> i2;
+
+    public ConcatenateIterator(Iterator<T> i1, Iterator<T> i2) {
+        this.i1 = i1;
+        this.i2 = i2;
+    }
+
+    public void    remove()       { throw new Error(); }
+    public boolean hasNext()      { return i1.hasNext() || i2.hasNext(); }
+    public T       next()         { return i1.hasNext() ? i1.next() : i2.next(); }
+    public Iterator<T> iterator() { return this; }
+}