protected CompactSampler()

in Java/core/src/main/java/com/amazon/randomcutforest/sampler/CompactSampler.java [105:140]


    protected CompactSampler(Builder<?> builder) {
        super(builder);
        checkArgument(builder.initialAcceptFraction > 0, " the admittance fraction cannot be <= 0");
        checkArgument(builder.capacity > 0, " sampler capacity cannot be <=0 ");

        this.storeSequenceIndexesEnabled = builder.storeSequenceIndexesEnabled;
        this.timeDecay = builder.timeDecay;
        this.maxSequenceIndex = builder.maxSequenceIndex;
        this.mostRecentTimeDecayUpdate = builder.sequenceIndexOfMostRecentTimeDecayUpdate;

        if (builder.weight != null || builder.pointIndex != null || builder.sequenceIndex != null
                || builder.validateHeap) {
            checkArgument(builder.weight != null && builder.weight.length == builder.capacity, " incorrect state");
            checkArgument(builder.pointIndex != null && builder.pointIndex.length == builder.capacity,
                    " incorrect state");
            checkArgument(
                    !builder.storeSequenceIndexesEnabled
                            || builder.sequenceIndex != null && builder.sequenceIndex.length == builder.capacity,
                    " incorrect state");
            this.weight = builder.weight;
            this.pointIndex = builder.pointIndex;
            this.sequenceIndex = builder.sequenceIndex;
            size = builder.size;
            reheap(builder.validateHeap);
        } else {
            checkArgument(builder.size == 0, "incorrect state");
            size = 0;
            weight = new float[builder.capacity];
            pointIndex = new int[builder.capacity];
            if (storeSequenceIndexesEnabled) {
                this.sequenceIndex = new long[builder.capacity];
            } else {
                this.sequenceIndex = null;
            }
        }
    }