1 10 11 package org.mmbase.util; 12 13 import java.util.*; 14 15 22 public class ChainedIterator implements Iterator { 23 24 List iterators = new ArrayList(); 25 Iterator iteratorIterator = null; 26 Iterator iterator = null; 27 public ChainedIterator() { 28 } 29 30 public void addIterator(Iterator i) { 31 if (iteratorIterator != null) throw new IllegalStateException (); 32 iterators.add(i); 33 } 34 35 36 private void setIterator() { 37 while(iteratorIterator.hasNext() && iterator == null) { 38 iterator = (Iterator) iteratorIterator.next(); 39 if (! iterator.hasNext()) iterator = null; 40 } 41 } 42 private void start() { 43 if (iteratorIterator == null) { 44 iteratorIterator = iterators.iterator(); 45 setIterator(); 46 } 47 } 48 49 public boolean hasNext() { 50 start(); 51 return (iterator != null && iterator.hasNext()); 52 53 } 54 55 public Object next() { 56 start(); 57 if (iterator == null) throw new NoSuchElementException(); 58 Object res = iterator.next(); 59 if (! iterator.hasNext()) { 60 iterator = null; 61 setIterator(); 62 } 63 return res; 64 65 } 66 public void remove() { 67 throw new UnsupportedOperationException (); 68 } 69 70 73 public static void main(String argv[]) { 74 ChainedIterator it = new ChainedIterator(); 75 List o = new ArrayList(); 76 List a = new ArrayList(); 77 a.add("a"); 78 a.add("b"); 79 List b = new ArrayList(); 80 List c = new ArrayList(); 81 c.add("c"); 82 c.add("d"); 83 List d = new ArrayList(); 84 it.addIterator(o.iterator()); 85 it.addIterator(a.iterator()); 86 it.addIterator(b.iterator()); 87 it.addIterator(c.iterator()); 88 it.addIterator(d.iterator()); 89 while (it.hasNext()) { 90 System.out.println("" + it.next()); 91 } 92 } 93 94 95 } 96 | Popular Tags |