1 package edu.berkeley.sbp.util;
4 public final class ConcatenatedIterator<T> implements Iterator<T>, Iterable<T> {
6 private final Iterator<Iterable<T>> ita;
7 private Iterator<T> cur;
9 public ConcatenatedIterator(Iterator<Iterable<T>> ita) {
11 cur = ita.hasNext() ? ita.next().iterator() : null;
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();
22 while (cur!=null && !cur.hasNext())
23 cur = ita.hasNext() ? ita.next().iterator() : null;
24 return cur==null ? null : cur.next();