All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.dflib.series.RangeSeries Maven / Gradle / Ivy

There is a newer version: 1.1.0
Show newest version
package org.dflib.series;

import org.dflib.Series;
import org.dflib.range.Range;

/**
 * A specialized Series that maps to a slice of another Series.
 */
public class RangeSeries extends ObjectSeries {

    private Series delegate;
    private int offset;
    private int size;

    public RangeSeries(Series delegate, int offset, int size) {
        super(delegate.getNominalType());
        this.delegate = delegate;
        this.offset = offset;
        this.size = size;
        Range.checkRange(offset, size, delegate.size());
    }

    @Override
    public int size() {
        return size;
    }

    @Override
    public T get(int index) {
        if (index >= size) {
            throw new ArrayIndexOutOfBoundsException(index);
        }

        return delegate.get(offset + index);
    }

    @Override
    public void copyTo(Object[] to, int fromOffset, int toOffset, int len) {

        if (fromOffset + len > size) {
            throw new ArrayIndexOutOfBoundsException(fromOffset + len);
        }

        delegate.copyTo(to, this.offset + fromOffset, toOffset, len);
    }

    @Override
    public Series materialize() {
        Object[] range = new Object[size];
        delegate.copyTo(range, this.offset, 0, size);
        return new ArraySeries<>((T[]) range);
    }

    @Override
    public Series fillNulls(T value) {
        // TODO: optimize data copy - do materialize and null checking over the same array
        return materialize().fillNulls(value);
    }

    @Override
    public Series fillNullsFromSeries(Series values) {
        // TODO: optimize data copy - do materialize and null checking over the same array
        return materialize().fillNullsFromSeries(values);
    }

    @Override
    public Series fillNullsBackwards() {
        // TODO: optimize data copy - do materialize and null checking over the same array
        return materialize().fillNullsBackwards();
    }

    @Override
    public Series fillNullsForward() {
        // TODO: optimize data copy - do materialize and null checking over the same array
        return materialize().fillNullsForward();
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy