1 package sharin.unlinq; 2 3 import java.util.Iterator; 4 5 public class ConcatenatedIterator<T> implements Iterator<T> { 6 7 private Iterator<T> iterator; 8 9 private final Iterator<T> second; 10 11 public ConcatenatedIterator(Iterator<T> first, Iterator<T> second) { 12 this.iterator = first; 13 this.second = second; 14 } 15 16 public boolean hasNext() { 17 18 if (iterator.hasNext()) { 19 return true; 20 } 21 22 if (iterator == second) { 23 return false; 24 } 25 26 iterator = second; 27 return iterator.hasNext(); 28 } 29 30 public T next() { 31 return iterator.next(); 32 } 33 34 public void remove() { 35 throw new UnsupportedOperationException(); 36 } 37 38 }