Получить все записи из карты <Integer, String> с ключами в определенном диапазоне - PullRequest
2 голосов
/ 22 ноября 2011

Мне нужен HashMap , который может выполнять быстрые операции для получения списка всех записей, ключи которых находятся в определенном целочисленном диапазоне, кроме того, для получения значений из карты на основе ключей.

Какая реализация Map подходит для этих нужд?

Ответы [ 3 ]

3 голосов
/ 22 ноября 2011

Вы, вероятно, ищете NavigableMap.Однако вы не можете использовать HashMap для его создания, поскольку карта должна быть SortedMap.Попробуйте вместо этого использовать TreeMap.

2 голосов
/ 22 ноября 2011

Используйте TreeMap, который реализует NavigableMap, предоставляя метод subMap , возвращающий вид карты только с ключами в вашем диапазоне. Чтобы получить значения, конечно, вы вызываете values() на результат.

Если у вас есть Map, ключи которого реализуют Comparable, вы можете создать TreeMap из него, вызвав new TreeMap(existingMap), но, вероятно, будет более эффективно создать его как TreeMap из начать.

2 голосов
/ 22 ноября 2011

TreeMap предоставит отсортированный список ключей. Затем вам нужно будет обрезать список, чтобы получить диапазон значений.

...