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;
}