Для определения, в какой диапазон попадает значение, можно использовать простой цикл сравнения значения со значениями начала и конца каждого диапазона.
Для поиска всех диапазонов, содержащих указанное значение, в массиве неизменяемых объектов, можно использовать алгоритм перебора всех объектов в массиве и проверку каждого диапазона на включение указанного значения. Для ускорения поиска можно предварительно отсортировать массив по началам диапазонов.
Еще один способ - использовать структуру данных интервальное дерево (interval tree). Это структура данных, которая хранит интервалы и позволяет эффективно искать все пересекающиеся интервалы для данного значения.
Также можно реализовать свой собственный алгоритм или структуру данных, применимый к конкретным условиям задачи.