Эффективная Карта элементов с непрерывными целочисленными ключами в Java - PullRequest
0 голосов
/ 21 марта 2019

Существует ли структура данных, которая реализует интерфейс Map и эффективно удерживает массив элементов с непрерывными целочисленными ключами в Java?

На мой взгляд, для достижения максимальной эффективности это было бы эквивалентно переносу массива или ArrayList со значением смещения индекса в интерфейсе Map, или хеш-таблице с хэш-функцией f(key) = key - offset и минимальным резервный массив.

Я знаю, что это довольно просто, но я не хочу изобретать колеса. Есть ли такая структура данных в JDK? Или есть библиотека, которая обеспечивает реализацию?

Ответы [ 2 ]

1 голос
/ 22 марта 2019

Если вам не нужна поддержка обновлений (что усложнит вашу проблему), рассмотрите возможность ввода IntFunction<T>, чтобы указать отображение вместо Map<Integer,T>

Когда у вас естьMap, вы можете передать map::get, а когда у вас нет карты, у вас есть много простых способов указать отображение.Например, вы можете использовать лямбду для определения простой функции отображения, например:

IntFunction<T> mapper = v -> {
    if (v < offset || v >= offset+array.length)
        return null;
    return array[v-offset];
}
0 голосов
/ 26 марта 2019

если вы ищете ключи для сортировки, то вы можете использовать интерфейс SortedMap в Java https://www.geeksforgeeks.org/sortedmap-java-examples/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...