Ну, есть специализированные структуры данных и алгоритмы для этого вида данных.Например, Patricia Trie или Radix Tree, который намного эффективнее по размеру, чем хеш-таблица для строк, но, конечно, будучи деревом, вычислительная сложность поиска составляет O (log n), а построение - O (n log n).Поскольку вы кодируете его из файла, вы можете записать его таким образом, чтобы загрузить его в O (n).
Hashtable (Dictionary) в C # реализован таким образом, чтоверхняя граница, за исключением того, что она использует внутреннюю 32-битную целочисленную адресацию (она не может содержать более 2 миллиардов элементов наверняка).
100000 элементов не слишком много для словаря.Возможно, более проблематичным для языков с сборщиком мусора будет то, что у вас будет 100000 выделенных строк, что немного подействует на ваш GC.Вы можете получить больше информации о реальном объеме памяти приложения, только запустив его.
Если память вызывает реальную проблему, поищите Patricia Trie и Radix Tree, которые идеально подходят для хранения словарей слов.Но вы можете начать использовать словарь и посмотреть, сколько памяти занимает ваше приложение.
Делая грубые вычисления, рассматривая строки как юникод и считая, что среднее слово в английском языке составляет 5,1 буквы (я читал в Интернете)и учитывая плюс 32 байта (для объекта и длины) для каждой строки, вы получите минимальный объем памяти (100000 * (32 + 5 * 2)) для строк 4200000 байтов, что является действительно небольшим объемом.