Лучший способ идентифицировать вхождение word , в отличие от той последовательности символов, которая встречается как подстрока строки файла, возможно, с помощью регулярного выражения Pattern
, скомпилированного из \bword\b
- \b
- это «границы слов».
Если у вас есть Pattern
, то нет прямого метода для подсчета количества вхождений в строке, поэтому вам потребуется некоторый тест для определения того, что быстрее - split
(принимая длину полученного массива из строк минус один), маловероятно, но возможно, или сделать Matcher
с помощью метода matcher
шаблона, затем зацикливаться на его методе find
во время подсчета (я бы поставил на это), или еще что-то еще , Но самостоятельного определения границ слов достаточно для PITA, поэтому я обычно использую регулярные выражения для выполнения задачи; -).
Можно снизить скорость, считывая (и считая вхождения слов) более одной строки за раз - скажем, МБ за раз. Но если вы сделаете это, то вам нужно позаботиться о последней «частичной» строке в мегабайте-глотке, поскольку вхождение слова может быть разбито между концом этой частичной строки и началом следующего глотка - выполнимо , но такая оптимизация выполняется только под принуждением, так как очень легко внести ошибку; -).