dev.marksman.collectionviews.WrappedArrayVector Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of collection-views Show documentation
Show all versions of collection-views Show documentation
Low overhead, protected views over Java collections
package dev.marksman.collectionviews;
import java.util.Arrays;
final class WrappedArrayVector extends ConcreteVector
implements NonEmptyVector, Primitive {
/**
* underlying must contain at least one element
*/
private final A[] underlying;
WrappedArrayVector(A[] underlying) {
this.underlying = underlying;
}
@Override
public boolean isEmpty() {
return false;
}
@Override
public int size() {
return underlying.length;
}
@Override
public A unsafeGet(int index) {
if (index < 0 || index >= underlying.length) {
throw new IndexOutOfBoundsException();
}
return underlying[index];
}
@Override
public ImmutableNonEmptyVector toImmutable() {
A[] copied = Arrays.copyOf(underlying, underlying.length);
return new ImmutableArrayVector<>(copied);
}
}