Нужен эффективный для хранения памяти способ хранения тонн строк (было: реализация HAT-Trie в Java)
Я работаю с большим набором(5-20 миллионов) струнных ключей(средняя длина 10 символов) которые мне нужно сохранить в структуре данных в памяти, которая поддерживает следующую операцию в постоянное время или почти постоянное время:
// Returns true if the input is present in the container, false otherwise
public boolean contains(String input)
Hashmap в Java оказывается более чем удовлетворительным с точки зрения пропускной способности, но занимает много памяти. Я ищу решение, которое эффективно использует память и поддерживает приличную пропускную способность (сравнимую или почти такую же хорошую, как хеширование).
Меня не волнует время вставки / удаления. В моем приложении я буду выполнять только вставки (только во время запуска) и впоследствии буду только запрашивать структуру данных, используяcontains
метод для жизни приложения.
Я прочитал, что структура данных HAT-Trie наиболее близка к моим потребностям. Мне интересно, есть ли библиотека, которая имеет реализацию.
Другие предложения с указателями на реализации приветствуются.
Благодарю вас.