У меня есть прямой буфер, содержащий целые числа, которые уже отсортированы (т.е. 1,1,3,3,3,3,7,7, ....).Большинство значений будет встречаться несколько раз.Я хочу найти первую позицию значений, которые я ищу.
- Существует ли функция поиска, работающая непосредственно с буферами, встроенными в Java?(ничего не смог найти)
- Если нет, то есть ли приличная библиотека, предоставляющая такую функциональность?
Если нет, какой алгоритм поиска порекомендовал бы для реализации, учитывая, что:
- Обычно в моем буфере будут миллионы записей
- Скорость очень важна
- Это должно вернуть первое вхождение искомого числа
- Я бы предпочел, чтобы он не изменял данные, поскольку впоследствии мне понадобятся исходные данные
РЕДАКТИРОВАТЬ: Спасибо всемплакаты с предложением Arrays.binarySearch()
, но, насколько мне известно, прямые буферы обычно не имеют резервного массива.Вот почему я искал реализацию, которая непосредственно работает с буфером.
Кроме того, каждое значение может встречаться до тысячи раз, поэтому линейный поиск после нахождения точки приземления может быть не очень эффективным.Предложение компаратора dasblinkenlight может работать, хотя.