1 package jp.naist.se.stigmata.utils;
7 import java.util.ArrayList;
8 import java.util.Collection;
10 import java.util.Iterator;
11 import java.util.NoSuchElementException;
15 * @author Haruaki Tamada
16 * @version $Revision$ $Date$
18 public class MultipleIterator<T> implements Iterator<T>{
19 private List<Iterator<T>> iterators = new ArrayList<Iterator<T>>();
20 private int index = 0;
21 private Iterator<T> current;
22 private boolean finished = false;
24 public MultipleIterator(){
27 public MultipleIterator(Iterator<T>[] iteratorArray){
28 for(Iterator<T> iterator: iteratorArray){
29 iterators.add(iterator);
33 public MultipleIterator(Iterator<Iterator<T>> iterator){
34 while(iterator.hasNext()){
35 iterators.add(iterator.next());
39 public MultipleIterator(Collection<Iterator<T>> collection){
40 this(collection.iterator());
43 public void add(Iterator<T> iterator){
44 iterators.add(iterator);
47 public void remove(Iterator<T> iterator){
48 iterators.remove(iterator);
51 private void nextIterator(){
52 if(index >= iterators.size()){
57 current = iterators.get(index);
67 public boolean hasNext(){
71 boolean flag = current.hasNext();
77 return finished || current.hasNext();
84 return current.next();
87 throw new NoSuchElementException();