Вы правы, думая о подходе HashMap
к этой проблеме.
HashMap может содержать уникальное слово, которое является ключом, и его частоту, которая является значением.
Map<String, Integer> wordCounts = new HashMap<>();
Вам также не нужно использовать список, содержащий ваши слова. Поместите их прямо на карту.
Вот пример:
String[] words = line.toLowerCase().split("([,.\\s]+) ");
for(String s: words){
//get a current frequency or set to be 0 if it doesn't exist.
Integer freq = wordCounts.getOrDefault(s, 0);
wordCounts.put(s, freq+1);
}
Он еще не закончен. Перебирая записи в wordCounts
, вы найдете наиболее распространенное слово.
int max = 0;
String word = null;
for(Map.Entry<String, Integer> entry: wordCounts.entrySet()) {
if(entry.getValue() > max) {
max = entry.getValue();
word = entry.getKey();
}
}