package mikera.indexz.impl; import mikera.indexz.AIndex; /** * Abstract base class for computed indexes. * * Intended for extension via an (anonymous) inner class. * * @author Mike * */ @SuppressWarnings("serial") public abstract class ComputedIndex extends AIndex { protected final int length; public ComputedIndex(int length) { assert(length>=0); this.length=length; } @Override public boolean isFullyMutable() { return false; } @Override public final int length() { return length; } @Override public int indexPosition(int x) { for (int i=0; i<length; i++) { if (get(i)==x) return i; } return -1; } @Override public void set(int i, int value) { throw new UnsupportedOperationException(); } @Override public AIndex exactClone() { return clone(); } }