Проблема в том, что вы создаете новый экземпляр Word в l oop. Когда массив содержит только что созданный Word, вы увеличиваете его количество, а не существующий экземпляр, который уже был добавлен в массив ранее. Рассмотрите возможность использования карты для решения проблемы, ключ - это слово, а значение - количество.
package example.stackoverflow;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class WordCount {
public static void main(String[] args) {
List<String> sourceList = Arrays.asList("ABC", "XYZ", "HGK", "ABC", "PWT", "HGK", "ABC");
Map<String, Integer> wordCount = new HashMap();
for (String word : sourceList) {
if (wordCount.get(word) != null) {
wordCount.put(word, wordCount.get(word) +1);
} else {
wordCount.put(word, 1);
}
}
System.out.println(wordCount);//output: {ABC=3, XYZ=1, PWT=1, HGK=2}
}
}