1 // Copyright 2006-2007 all rights reserved; see LICENSE file for BSD-style license
3 package edu.berkeley.sbp.util;
6 public final class ConcatenatedIterator<T> implements Iterator<T>, Iterable<T> {
8 private final Iterator<Iterable<T>> ita;
9 private Iterator<T> cur;
11 public ConcatenatedIterator(Iterator<Iterable<T>> ita) {
13 cur = ita.hasNext() ? ita.next().iterator() : null;
16 public void remove() { throw new Error(); }
17 public Iterator<T> iterator() { return this; }
18 public boolean hasNext() {
19 while (cur!=null && !cur.hasNext())
20 cur = ita.hasNext() ? ita.next().iterator() : null;
21 return cur!=null && cur.hasNext();
24 while (cur!=null && !cur.hasNext())
25 cur = ita.hasNext() ? ita.next().iterator() : null;
26 return cur==null ? null : cur.next();