2013-03-15 1 views
1

Я ищу карту памяти с API-интерфейсом, совместимым с java (не обязательно java), который поддерживает запросы диапазона. Наш дизайн еще не требует, чтобы он был распространен.Что такое хорошая Java-карта памяти, поддерживающая диапазон запросов?

Любые предложения? Благодаря!

+1

Я собирался предложить «TreeMap», но у меня есть подозрение, что вы спрашиваете о чем-то другом? – NPE

+0

@NPE treemap будет делать, я просто не слишком убежден в том, насколько эффективен запрос диапазона в нем. Другие плакаты также предложили это, поэтому я расскажу об этом. Благодаря!! – Miquel

+0

Зависит от того, что вы имеете в виду под «запросами диапазона», но [Guava «RangeMap»] (http://docs.guava-libraries.googlecode.com/git-history/release/javadoc/com/google/common/collect/RangeMap .html)? –

ответ

3

Использовать TreeMap. Запрос диапазона может быть выполнен с использованием методов lowerEntry и higherEntry, higherKey и lowerKey. Найдите первый ключ меньше левого конца диапазона, первый ключ больше, чем правый, и верните все между ними.

+0

Отлично. Я не был уверен, что 'TreeMap' будет оптимизирован для запросов диапазона. Тогда я уточню это. Благодаря! – Miquel

+1

Фактически, любой класс, реализующий интерфейс 'NavigableMap', будет работать. Пока что только «TreeMap» и «ConcurrentSkipListMap» реализуют этот интерфейс в stdlib. – barjak

1

В зависимости от того, насколько гибкими вам нужны вещи и как расширяемы и т. Д., Вы можете рассмотреть возможность использования базы данных в памяти; это даст вам гораздо больше возможностей, чем вы упомянули здесь, и, вероятно, это интересно, если вы считаете, что можете использовать их гораздо больше в один день. Вы бы потратили много сложностей и, возможно, место для чего-то, что было бы чрезвычайно гибким. Но вы должны знать, что несколько (бесплатных) баз данных Java предлагают конфигурации в памяти, в том числе Derby (выпущенные с Java).

+0

Большое спасибо. Для сравнения производительности raw с предыдущей реализацией я хотел быстро прототип с простой структурой. Я думаю, что это, безусловно, хорошая идея переехать в полноценный KVS сразу после. Мне также было любопытно, как эти KVS будут поддерживать поддерживающие запросы диапазона. – Miquel

1

Возможно, что-то вроде interval tree?

+0

Определенно стоит изучить его. Я думаю, что это не соответствует моей конкретной проблеме, но это, безусловно, подходит к вопросу. Благодаря! – Miquel

 Смежные вопросы

  • Нет связанных вопросов^_^