Я бы пошел с кодом, предложенным Elite Gentleman, но я просто ставлю это в качестве темы для обсуждения: как насчет использования StringTokenizer?Если бы масштабируемость / производительность была проблемой, токенизатор работал бы лучше?В этом случае вам может понадобиться выполнить цикл по строке только один раз, вместо того, чтобы сначала выполнить разбиение регулярного выражения, а затем еще один проход по массиву.
Примерно так:
StringTokenizer st = new StringTokenizer(s);
HashMap<String, Integer> terms = new HashMap<String, Integer>();
while (st.hasMoreElements()) {
String term = st.nextToken();
int score = 0;
if(terms.containsKey(term)){
score = terms.get(term);
}
terms.put(term, score +1);
}
Я знаю, что StringTokenizer, хотя и не считается устаревшим, является классом Legacy в соответствии с документами Java, и его использование не рекомендуется:
StringTokenizer - это устаревший класс, который сохраняется из соображений совместимости, хотя его использование не рекомендуется в новом коде.Всем, кто ищет эту функциональность, рекомендуется вместо этого использовать метод split String или пакет java.util.regex.
Однако мне интересно, если в этом случае для простого токена он дает более производительные результаты.
Есть мысли?