вы можете сократить накладные расходы на использование структур данных и написание алгоритма с использованием некоторой библиотеки, например [lucene] [1]
[1]: http://lucene.apache.org/. Я не очень уверен для вашего случая, будет ли это правильно, но когда в Java нужно создавать индексы для файлов и выполнять некоторые операции поиска, используя эти индексы, используя Люцен считается справедливым.