public static long binarySearchObjectId(long startOffset, List<RangeIndex> rangeIndexList) {
        if (rangeIndexList == null || rangeIndexList.isEmpty()) {
            return -1L;
        }
        int index = Collections.binarySearch(rangeIndexList, new RangeIndex(startOffset, 0, 0));
        index = index < 0 ? -index - 2 : index;
        if (index < 0) {
            return -1L;
        }
        if (index >= rangeIndexList.size()) {
            return rangeIndexList.get(rangeIndexList.size() - 1).getObjectId();
        }
        return rangeIndexList.get(index).getObjectId();
    }
Search for the object with the maximum start offset less than or equal to the given start offset.
If not found, return -1.
s3stream/src/main/java/com/automq/stream/s3/index/LocalStreamRangeIndexCache.java