public static long mergeWithDenseCompaction()

in core/src/main/java/org/apache/ignite/activestore/impl/subscriber/lead/MergeHelper.java [71:121]


    public static long mergeWithDenseCompaction(LongList from, MutableLongList to, long dense) {
        int i = 0;
        int j = 0;
        long nextDense = dense + 1;

        while (j < from.size() && from.get(j) < nextDense) {
            j++;
        }
        while (i < to.size() && j < from.size()) {
            long a = to.get(i);
            long b = from.get(j);

            if (a == b) {
                j++;
            } else if (a > b) {
                j++;
                if (b == nextDense) {
                    nextDense++;
                }
                else {
                    to.addAtIndex(i, b);
                    i++;
                }
            } else {
                if (a == nextDense) {
                    nextDense++;
                    to.removeAtIndex(i);
                } else {
                    i++;
                }
            }
        }
        while (i < to.size()) {
            if (to.get(i) == nextDense) {
                nextDense++;
                to.removeAtIndex(i);
            } else {
                break;
            }
        }
        while (j < from.size()) {
            long b = from.get(j);
            if (b == nextDense) {
                nextDense++;
            } else {
                to.add(b);
            }
            j++;
        }
        return nextDense - 1;
    }