Я закончил свой код, чтобы найти по 20 слов после поиска много раз, но это не в нисходящем слове. мне нужно добавить код для сортировки списка по частоте в порядке убывания, если два слова имеют один и тот же номер счета:Как сортировать список по частоте в порядке убывания
{ «кошка» => 43, «C» => 43}
выход должен быть
с
кошка
Мой код:
public static void main(String[] args) throws IOException{
String delimiters = ".;_?>*/";
String[] result = new String[20];
List<String> listArray = new ArrayList<String>();
Map<String, Integer> map = new HashMap<String, Integer>();
FileReader fileR = new FileReader("D:/test.txt");
BufferedReader bufferedR = new BufferedReader(in);
String line;
while ((line = bufferedR.readLine()) != null) {
StringTokenizer sToken = new StringTokenizer(line, delimiters);
while (sToken.hasMoreTokens()) {
String token = sToken.nextToken().trim().toLowerCase();
if (map.containsKey(token)) {
int val = map.get(token);
val++;
map.put(token, val);
} else{
map.put(token, 1);
}
}
}
bufferedR.close();
for(int i=0;i<result.length;i++){
int mValu=0;
String wKey="";
for(Map.Entry<String,Integer> entry:map.entrySet()){
if(entry.getValue()>mValu){
mValue=entry.getValue();
wKey=entry.getKey();
}
}
map.remove(wKey);
result[i]=wKey;
}
for (int i = 0 ; i<result.length;i++){
System.out.println(result[i]);
}
}
}
Когда я исследование по этой теме я нашел этот код, но не знаю, как вписать его в мой код:
List<Map.Entry<String, Integer>> entries = new `ArrayList`<Map.Entry<String, Integer>>(map.entrySet());
Collections.sort(entries, new Comparator<Map.Entry<String, Integer>>() {
public int compare(Map.Entry<String, Integer> a, Map.Entry<String, Integer> b) {
return Integer.compare(b.getValue(), a.getValue());
}
});
Или есть лучшая идея, как получить частоты в порядке убывания ?!
Спасибо за помощь.
Я получил сообщение об ошибке после добавления кода и вам нужно создать метод toList(). Не могли бы вы показать, какая часть должна быть добавлена в мой код. Я не знаю, как это работает. – ghco
Я добавил необходимый импорт –
Кроме того, можете ли вы уточнить заказ, который вы ожидаете в качестве выхода? –