Нужен эффективный для хранения памяти способ хранения тонн строк (было: реализация 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 наиболее близка к моим потребностям. Мне интересно, есть ли библиотека, которая имеет реализацию.

Другие предложения с указателями на реализации приветствуются.

Благодарю вас.

Ответы на вопрос(4)

Ваш ответ на вопрос