У меня есть код, который вычисляет частоты слов в заданном ArrayList слов. У меня есть частотный класс, который по существу сохраняет слово и его соответствующую частоту. Вот мой код:Счетчик частоты слов, список не работает правильно
public static List<Frequency> computeWordFrequencies(List<String> words) {
List<String> wordsList = words;
String[] wordsArray = wordsList.toArray(new String[0]);
Arrays.sort(wordsArray);
Set<String> noDuplicates = new LinkedHashSet<>(Arrays.asList(wordsArray));
List<Frequency> frequencies = new ArrayList<>();
for (String word : noDuplicates) {
int wordFrequency = Collections.frequency(words, word);
Frequency newFrequency = new Frequency(word, wordFrequency);
System.out.println(newFrequency.toString());
frequencies.add(newFrequency);
}
for (Frequency f : frequencies) {
System.out.println(f.getText()+" "+f.getFrequency());
}
return frequencies;
}
Для справки, частота класса:
public class Frequency {
private final String word;
private static int frequency;
public Frequency(String word) {
this.word = word;
frequency = 0;
}
public Frequency(String word, int newfrequency) {
this.word = word;
this.frequency = newfrequency;
}
public String getText() {
return word;
}
public int getFrequency() {
return frequency;
}
public static void setFrequency(int newFrequency) {
frequency = newFrequency;
}
public void incrementFrequency() {
frequency++;
}
@Override
public String toString() {
return word + ":" + frequency;
}
}
Я вставил печать заявление в своем коде, и это часть продукции:
упаковки: 1 ярд : 3 пряжи: 2 год: 2 еще: 1 yukon: 1 ноль: 2 заброшенный
2 аккордеон 2 acequia 2 через
2 добавлено 2
Итак, когда частоты создаются, у них есть правильная частота, но почему-то они все изменились на 2. Что еще более странно, если я изменил второй оператор печати на f.toString(), даже первый оператор печати показывает только 2 для частот, как это:
растет: 2 реки: 2 riveredge: 2 riversound: 2 дороги: 2 Роадраннерс: 2 придорожной: 2 обжаренный: 2
Может кто-нибудь скажет мне, почему все частоты установлены на 2 или где проблема?
, хорошее определение –