Если я правильно понимаю проблему, вам нужно прочитать 85 КБ текста и разобрать каждое слово (используйте split или StringTokenizer). Для каждого слова вам нужно знать, есть ли оно в наборе из 500 слов, и, если это так, заменить его соответствующей маской.
Если вы знаете, что у вас есть около 500 слов, я бы рекомендовал хранить 500 слов и их маски в HashMap с начальной емкостью около 650 (JDK говорит, что хеширование наиболее эффективно с коэффициентом загрузки 0,75). Вставьте пары «маска слова» в HashMap с помощью цикла for.
Самый большой удар за доллар (HashMap), который вы получаете, заключается в том, что операции get / put (поиск ключа) выполняются в постоянное время, что лучше, чем O (n) в массиве и даже O (log (n). )) если вы выполняете бинарный поиск по отсортированному массиву.
Вооружившись HashMap, вы можете создать SringBuffer, фильтруя эти 85 КБ текста.
Верните String.toString () из вашего метода, и все готово! С уважением, - М.С.
PS Если вы строите карту на сервере и выполняете фильтрацию где-то еще (на клиенте), и вам необходимо перенести Словарь, HashMap этого не сделает - его нельзя сериализовать. Используйте Hashtable в этом случае. Если на той же машине, HashMap более эффективно использует память. Позже - М.С.