package net.varkhan.base.functor.expander; import net.varkhan.base.functor.Expander; import java.util.Iterator; /** * <b></b>. * <p/> * @author varkhan * @date 11/5/13 * @time 5:14 PM */ public class ArrayExpander<T,C> implements Expander<T,T[],C> { @Override public Iterable<T> invoke(T[] src, C ctx) { return new ArrayIterable<T>(src); } public static class ArrayIterable<T> implements Iterable<T> { protected final T[] src; public ArrayIterable(T[] src) { this.src = src; } @Override public Iterator<T> iterator() { return new ArrayIterator<T>(src); } } public static class ArrayIterator<T> implements Iterator<T> { protected final T[] itr; protected volatile int pos=0; public ArrayIterator(T[] itr) { this.itr = itr; } @Override public boolean hasNext() { return pos<itr.length; } @Override public T next() { return itr[pos++]; } @Override public void remove() { } } @Override public String toString() { return "$"; } }