update copyright date 2006->2007
[sbp.git] / src / edu / berkeley / sbp / util / ConcatenatedIterator.java
1 // Copyright 2006-2007 all rights reserved; see LICENSE file for BSD-style license
2
3 package edu.berkeley.sbp.util;
4 import java.util.*;
5
6 public final class ConcatenatedIterator<T> implements Iterator<T>, Iterable<T> {
7
8     private final Iterator<Iterable<T>> ita;
9     private       Iterator<T> cur;
10
11     public ConcatenatedIterator(Iterator<Iterable<T>> ita) {
12         this.ita = ita;
13         cur = ita.hasNext() ? ita.next().iterator() : null;
14     }
15
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();
22     }
23     public T       next()         {
24         while (cur!=null && !cur.hasNext())
25             cur = ita.hasNext() ? ita.next().iterator() : null;
26         return cur==null ? null : cur.next();
27     }
28 }