Ваш код имеет некоторые проблемы с ним.
Если вы заметите, ваш код будет просматривать список из n элементов n ^ 2 раза.Если вхождение слова в два раза.Вы будете увеличивать значение счетчика каждого слова в два раза.Вам нужно следить за набором слов, которые вы уже видели, и проверить, было ли новое слово, с которым вы столкнулись, уже видели или нет.
Если в вашем предложении было 3 вхождения одного слова,каждое ваше слово будет иметь счет 3. 3 - это избыточные данные, которые не нужно хранить для каждого токена, а просто слово.
Все это можно легко сделать, если вы знаете, какMap
работает.
Вот реализация, которая будет работать.
import java.util.HashMap;
public class Main {
public static void main(String[] args) {
String sentence = "is this a sentence or is this not ";
String[] myStringArray = sentence.split("\\s"); //Split the sentence by space.
Map <String, Integer> wordOccurrences = new HashMap <String, Integer> (myStringArray.length);
for (String word : myStringArray)
if (wordOccurrences.contains(word))
wordOccurrences.put(word, wordOccurrences.get(word) + 1);
else wordOccurrences.put(word, 1);
for (String word : wordOccurrences.keySet())
if (wordOccurrences.get(word) > 1)
System.out.println("1b. - Tokens that occurs more than once: " + word + "\n");
}
}