
com.simplaex.bedrock.SeqReversedView Maven / Gradle / Ivy
package com.simplaex.bedrock;
import javax.annotation.Nonnegative;
import javax.annotation.Nonnull;
import java.lang.reflect.Array;
import java.util.Arrays;
import java.util.Comparator;
import java.util.Objects;
class SeqReversedView extends Seq {
private final int beginOffset;
private final int endOffset;
private final Object[] backingArray;
SeqReversedView(@Nonnull final Object[] array, @Nonnegative final int beginOffset, @Nonnegative final int endOffset) {
this.backingArray = array;
this.beginOffset = beginOffset;
this.endOffset = endOffset;
}
@SuppressWarnings("unchecked")
@Override
public E get(@Nonnegative final int index) {
checkBounds(index);
return (E) backingArray[this.beginOffset + length() - index - 1];
}
@Nonnull
@Override
public Seq reversed() {
return new SeqSimpleView<>(backingArray, beginOffset, endOffset);
}
@SuppressWarnings("unchecked")
@Nonnull
@Override
public Seq sorted() {
final int len = length();
final Object[] array = new Object[len];
System.arraycopy(backingArray, beginOffset, array, 0, len);
Arrays.sort(array, NULL_ACCEPTING_COMPARATOR);
return new SeqSimpleSorted(array);
}
@SuppressWarnings("unchecked")
@Nonnull
@Override
public Seq sortedBy(@Nonnull final Comparator super E> comparator) {
Objects.requireNonNull(comparator);
final int len = length();
final Object[] array = new Object[len];
System.arraycopy(backingArray, beginOffset, array, 0, len);
Arrays.sort(array, (Comparator
© 2015 - 2025 Weber Informatics LLC | Privacy Policy