import java.util.*; public class MergeIterators implements Iterator { Iterator a,b; MergeIterators(Iterator a, Iterator b){ this.a = a; this.b = b; } public boolean hasNext(){ return a.hasNext() || b.hasNext(); } // pre: there is a next public T next(){ if (a.hasNext() ) if (b.hasNext()) if ( Math.random() < 0.5 ) return a.next(); else return b.next(); else return a.next(); else return b.next(); } public void remove(){} public static void testMe(){ List a1 = Arrays.asList("Hans", "Lars", "Gurli", "Hedvig"); List a2 = Arrays.asList("Per", "Ib", "Odd", "Kim"); MergeIterators ms = new MergeIterators( a1.iterator(), a2.iterator()); while (ms.hasNext()) System.out.println( ms.next()); System.out.println("-----------"); } }