PatriciaTrie или HashMap, которые лучше всего подходят для хранения большого объема данных в сеансе

#java #collections

#java #Коллекции

Вопрос:

PatriciaTrie или HashMap, которые лучше всего подходят для хранения большого (100 тысяч записей) объема данных в сеансе. Как PatriciaTrie распределяет память — например, HashMap выделяет память с помощью Initial_Size*loadFactor.

Комментарии:

1. Определите large — по крайней мере, на порядок величины? Что? Сотни записей? Несколько мега записей?

2. Проведите несколько тестов, чтобы выяснить, что работает лучше.

3. Мне нужно объяснение, почему я собираюсь использовать PatriciaTrie вместо HashMap.

4. Большой означает, что где-то около миллиона записей.

5. Каков ваш критерий для принятия решения о том, что является «лучшим»? Вы захотите использовать методы API, специфичные для trie?

Ответ №1:

В настоящее время я ищу лучшую замену HashMap из-за перегрузки памяти, и мне нужно более быстрое обновление и извлечение данных.

Я не знаю, Trie даст ли a вам меньшую нагрузку на память, чем a HashMap . Это зависит от размера и распределения ключей, а также от того, как вы реализуете Trie. То же самое, вероятно, касается скорости поиска и обновления.

Я думаю, вам нужно будет попробовать (без каламбура) обе альтернативы и измерить производительность… с наборами данных, которые являются репрезентативными для ваших фактических данных.

Другой момент (который вы, похоже, неправильно поняли) заключается в том, планируете ли вы использовать методы, специфичные для Trie, в API; например, ceiling , floor , headMap tailMap , first last и так далее. Если вы это сделаете, то вам нужно использовать Trie … или какой-либо другой вид навигационного map API. Вы не можете эффективно выполнять такие вещи, используя HashMap .