added more
[sbp.git] / src / edu / berkeley / sbp / util / ConcatenatedIterator.java
1 package edu.berkeley.sbp.util;
2 import java.util.*;
3
4 public final class ConcatenatedIterator<T> implements Iterator<T>, Iterable<T> {
5
6     private final Iterator<Iterable<T>> ita;
7     private       Iterator<T> cur;
8
9     public ConcatenatedIterator(Iterator<Iterable<T>> ita) {
10         this.ita = ita;
11         cur = ita.hasNext() ? ita.next().iterator() : null;
12     }
13
14     public void    remove()       { throw new Error(); }
15     public Iterator<T> iterator() { return this; }
16     public boolean hasNext()      {
17         while (cur!=null && !cur.hasNext())
18             cur = ita.hasNext() ? ita.next().iterator() : null;
19         return cur!=null && cur.hasNext();
20     }
21     public T       next()         {
22         while (cur!=null && !cur.hasNext())
23             cur = ita.hasNext() ? ita.next().iterator() : null;
24         return cur==null ? null : cur.next();
25     }
26 }