no he escrito el código de Java en una Mientras tanto, y esto me dio curiosidad por saber si todavía lo "entendí".
primer intento:
import java.util.Iterator;
import java.util.Arrays; /* For sample code */
public class IteratorIterator<T> implements Iterator<T> {
private final Iterator<T> is[];
private int current;
public IteratorIterator(Iterator<T>... iterators)
{
is = iterators;
current = 0;
}
public boolean hasNext() {
while (current < is.length && !is[current].hasNext())
current++;
return current < is.length;
}
public T next() {
while (current < is.length && !is[current].hasNext())
current++;
return is[current].next();
}
public void remove() { /* not implemented */ }
/* Sample use */
public static void main(String... args)
{
Iterator<Integer> a = Arrays.asList(1,2,3,4).iterator();
Iterator<Integer> b = Arrays.asList(10,11,12).iterator();
Iterator<Integer> c = Arrays.asList(99, 98, 97).iterator();
Iterator<Integer> ii = new IteratorIterator<Integer>(a,b,c);
while (ii.hasNext())
System.out.println(ii.next());
}
}
Usted podría , por supuesto, usar más clases de colección en lugar de una matriz + índice de contador puro, pero esto en realidad se siente un poco más limpio que la alternativa. ¿O simplemente estoy predispuesto a escribir principalmente C en estos días?
De todos modos, ahí lo tienes. La respuesta a su pregunta es "sí, probablemente".
Añadir un constructor varargs también y Votaría usted por – Christoffer