package org.osgl.util; import org.osgl.$; import java.util.EnumSet; import java.util.ListIterator; /** * Created with IntelliJ IDEA. * User: luog * Date: 28/10/13 * Time: 10:15 PM * To change this template use File | Settings | File Templates. */ class MappedList<T, R> extends ReadOnlyListBase<R> implements C.List<R> { private final C.List<? extends T> l_; private final $.Function<? super T, ? extends R> m_; MappedList(C.List<? extends T> list, $.Function<? super T, ? extends R> mapper) { E.NPE(list, mapper); l_ = list; m_ = mapper; } @Override protected EnumSet<C.Feature> internalInitFeatures() { return l_.features(); } @Override public ListIterator<R> listIterator(int index) { return new MappedListIterator<T, R>(l_.listIterator(index), m_); } @Override public int size() { return l_.size(); } @Override public R get(int index) { T t = l_.get(index); return m_.apply(t); } public static <T, R> MappedList<T, R> of(C.List<? extends T> data, $.Function<? super T, ? extends R> mapper) { return new MappedList<T, R>(data, mapper); } }