输入一行单词,按按此出现的频率从高到低输出
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Scanner;
public class WordFrequence {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String str = sc.nextLine();
sc.close();
String[] Array = str.split(" ");
findFrequence(Array);
}
public static void findFrequence(String[] arr) {
int size = arr.length;
if (size==0) {
System.out.println("输入错误");
return;
}
Map<String, Integer> m = new HashMap<>();
for (int i = 0; i < size; i++) {
if (m.containsKey(arr[i])) {
m.put(arr[i],m.get(arr[i])+1);
}else {
m.put(arr[i],1);
}
}
List<Map.Entry<String,Integer>> list = new ArrayList<>(m.entrySet());
Collections.sort(list,(a,b)->b.getValue()-a.getValue());
for (int i = 0; i < list.size(); i++) {
System.out.print(list.get(i).getKey() + " ");
}
}
}
示例
输入:word like dog dog like like world word like
输出:like word dog world