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