in baremaps-core/src/main/java/org/apache/baremaps/database/collection/MonotonicFixedSizeDataMap.java [67:88]
public E get(Object keyObject) {
long key = (long) keyObject;
long chunk = key >>> 8;
if (chunk >= offsets.size()) {
return null;
}
long lo = offsets.get(chunk);
long hi = Math.min(keys.sizeAsLong(),
chunk >= offsets.sizeAsLong() - 1 ? keys.sizeAsLong() : offsets.get(chunk + 1)) - 1;
while (lo <= hi) {
long index = (lo + hi) >>> 1;
long value = keys.get(index);
if (value < key) {
lo = index + 1;
} else if (value > key) {
hi = index - 1;
} else {
return values.get(index);
}
}
return null;
}