Write an algorithm that collapses a list of Iterators into a single Iterator.
package javacore; import java.util.ArrayList; import java.util.Arrays; import java.util.Iterator; import java.util.List; public class CollapseIterators { /** * @param args * Write an algorithm that collapses a list of Iterators into a * single Iterator. */ public static void main(String[] args) { final Iterator<Integer> a = Arrays.asList(1, 2, 3, 4, 5).iterator(); final Iterator<Integer> b = Arrays.asList(6).iterator(); final Iterator<Integer> c = new ArrayList<Integer>().iterator(); final Iterator<Integer> d = new ArrayList<Integer>().iterator(); final Iterator<Integer> e = Arrays.asList(7, 8, 9).iterator(); final Iterator<Integer> singleIterator = singleIterator(Arrays.asList( a, b, c, d, e)); if (null != singleIterator && singleIterator.hasNext()) { System.out.println("Single Iterator obtained!!"); while (singleIterator.hasNext()) { System.out.println(singleIterator.next().toString()); } } else { System.out.println("Single Iterator did not obtained"); } } public static <T> Iterator<T> singleIterator( final List<Iterator<T>> iteratorList) { ListIterator<T> it = new ListIterator<>(iteratorList); return it; } } class ListIterator<T> implements Iterator<T> { // Field private final Iterator<Iterator<T>> listIterator; private Iterator<T> currentIterator; // Constructor: make list iterator into Iterator<iterator>> public ListIterator(List<Iterator<T>> iterators) { this.listIterator = iterators.iterator(); this.currentIterator = listIterator.next(); } @Override public boolean hasNext() { // CurrentIterator has no next if (!currentIterator.hasNext()) { // set up next iterator as currentIterator if (!listIterator.hasNext()) return false; currentIterator = listIterator.next(); // NOTE: recurse to check if next still has no next hasNext(); } return true; } public T next() { hasNext(); return currentIterator.next(); } // public boolean remove() public void remove() { hasNext(); currentIterator.remove(); } }
Sample Output:-
Single Iterator obtained!!
1
2
3
4
5
6
7
8
9
Problem reference: "Java Programming Interviews Exposed"
Related Question:
How can we achieve this behaviour using Google Guava collections framework ?
This comment has been removed by the author.
ReplyDeleteinformative blog , keep posting and if you are intresting in code developer then checkout python classes in satara
ReplyDeleteYour blog is nice & informative thanks
ReplyDeleteAdvanced Java Certification Training
F1DD964F18
ReplyDeleteBeğeni Satın Al
Güvenilir Takipçi
Takipçi Satın Al
22C01EB9D7
ReplyDeleteGörüntülü Sex
Ücretli Show
Ücretli Show
C53A2346BD
ReplyDeleteWhatsapp Ücretli Şov
Görüntülü Show
Telegram Show Kanalı