#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
.