1 package jp.sourceforge.stigmata.utils;
7 import java.util.ArrayList;
8 import java.util.Collection;
9 import java.util.Iterator;
10 import java.util.List;
11 import java.util.NoSuchElementException;
15 * @author Haruaki Tamada
17 public class MultipleIterator<T> implements Iterator<T>{
18 private List<Iterator<T>> iterators = new ArrayList<Iterator<T>>();
19 private int index = 0;
21 public MultipleIterator(){
24 public MultipleIterator(Collection<Iterator<T>> collection){
25 this(collection.iterator());
28 public MultipleIterator(Iterator<Iterator<T>> iterator){
29 while(iterator.hasNext()){
30 iterators.add(iterator.next());
34 public MultipleIterator(Iterator<T>[] iteratorArray){
35 for(Iterator<T> iterator: iteratorArray){
36 iterators.add(iterator);
40 public void add(Iterator<T> iterator){
41 iterators.add(iterator);
45 public boolean hasNext(){
46 while(index < iterators.size()){
47 boolean next = iterators.get(index).hasNext();
60 if(!iterators.get(index).hasNext()){
62 while(index < iterators.size()){
63 if(iterators.get(index).hasNext()){
64 return iterators.get(index).next();
68 throw new NoSuchElementException();
71 return iterators.get(index).next();
76 iterators.get(index).remove();
79 public void remove(Iterator<T> iterator){
80 iterators.remove(iterator);