Я бы разделил вашу задачу на: а) определение слов и б) подсчет количества каждого уникального слова в тексте.
а) можно решить с помощью разбиения текста регулярным выражением.
б) можно решить, построив карту с результатом а).
String text = "I like good mules. Mules are good :)";
String[] words = text.split("([\\W\\s]+)");
Map<String, Integer> counts = new HashMap<String, Integer>();
for (String word: words) {
if (counts.containsKey(word)) {
counts.put(word, counts.get(word) + 1);
} else {
counts.put(word, 1);
}
}
результат: {Mules = 1, are = 1, good = 2, mules = 1, like = 1, I = 1}