Здравствуйте, Cyberax, Вы писали:
C>Здравствуйте, investigator, Вы писали:
C>>>Нельзя эффективно искать интервалы по близости к данной точке. Для этого нужно хранить индексы по началу и концу интервала, индексы по одному параметру пллохо подходят.
I>>А что если просто складывать точки-концы в NavigableMap? Каждая такая точка может, в свою очередь, ссылаться на свой интервал, содержать дополнительную информацию, например, начало это или конец интервала...
C>Проблема в том, что нужно искать не только по одной точке.
C>К примеру, такой случай:
C>C>====[-------]===[--x---------------------------]===========
C>
C>Если искать по концевой точке, то ближайшим интервалом к точке "x" будет первый интервал. Что в корне неверно, так как точка лежит во втором.
Почему первый?
Имеем:
====A1-------A2===B1--x---------------------------B2===========
Все точки — A1, A2, B1 и B2 лежат в мапе. Далее по x выдергиваем ближайщую слева или справа. В нашем случае будет B1. Получаем второй интервал.
C>Я пока соорудил монстра из двух NavigableMap, но это мне активно не нравится.
По-моему, если их объединить, то как раз получится мой вариант (если я правильно догадываюсь об их смысле). Концептуально, правда, это ничего не поменяет.