package mikera.vectorz.impl; import java.util.AbstractList; import java.util.Iterator; import mikera.vectorz.AVector; import mikera.vectorz.util.ErrorMessages; /** * Simple wrapper class to view a vector according to the java.util.List interface * * @author Mike */ public final class ListWrapper extends AbstractList<Double> { private final AVector wrappedVector; private final int length; private static final Double ZERO=0.0; public ListWrapper(AVector v) { this.wrappedVector=v; this.length=v.length(); } @Override public Double get(int index) { double v=wrappedVector.get(index); if (v==0.0) return ZERO; // saves boxing with sparse arrays return v; } @Override public Double set(int index, Double value) { if ((index<0)||(index>=length)) throw new IndexOutOfBoundsException(ErrorMessages.invalidIndex(wrappedVector, index)); wrappedVector.unsafeSet(index,value); return null; } @Override public int size() { return length; } @Override public Iterator<Double> iterator() { return wrappedVector.iterator(); } }