У меня есть требование создать кеш Java, который содержит все города и аэропорты. Итак, если я запрашиваю кеш для местоположения, скажем, города, он должен вернуть все аэропорты в этом городе, и если я запрашиваю местоположение, которое является аэропортом, я должен вернуть этот аэропорт. Кроме того, каждое местоположение должно храниться в виде массива байтов в кеше (поскольку открытый интерфейс для запроса кеша имеет байт [] в качестве параметра для местоположения). Другие соображения:
- Поиск должен быть очень быстрым, максимально быстрым
- Кэш загружается только один раз при запуске системы. После загрузки он не меняется.
- Поскольку он загружается только один раз, мы можем отсортировать его, если это ускорит поиск.
Что у меня есть до сих пор:
Подход 1
Создайте тонкую обертку над массивом byte[], скажем, ByteWrapper. Поместите каждое местоположение (и аэропорты, и города) в качестве ключа на карту (TreeMap?). Используйте списки ByteWrapper (содержащие аэропорты, где это применимо) в качестве значений.
Подход 2
Создайте многомерный массив byte[], который отсортирован по местоположению. По сути это карта. Затем используйте бинарный поиск, чтобы найти ключ и вернуть результаты.
Какой подход вы бы предложили? Пожалуйста, дайте мне знать, если у вас есть идеи получше. Спасибо.