Java实现 统计单词出现的次数并按照单词频率从高到低输出

import java.util.*;
import java.util.Map.Entry;


public class CountWord {
public static void sort(Map map)
{
List> list=new ArrayList>();
for (Entry entry : map.entrySet()) {
list.add(entry);
}
Collections.sort(list,new EntryComparator());
for (Entry obj : list) {
System.out.println(obj.getKey() + "\t" + obj.getValue());
}
}
public static void StatList(String str)
{
HashMap map=new HashMap<>();
String []slist=str.split("\\W+");//作用:删除标点字符,\W意思是非单词字符;
for(int i=0;i {
// if (!map.containsKey(slist[i])) {
// map.put(slist[i], 1);
// }else{
// map.put(slist[i],map.get(slist[i])+1);
// }

Integer fre=map.get(slist[i]);
map.put(slist[i], fre==null ? 1:fre+1);
}
sort(map);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc=new Scanner(System.in);

while(sc.hasNextLine())
{
String str=sc.nextLine();
StatList(str);
}
//String string="Hello,welcome to trend!to Hello to";
sc.close();
}
}
class EntryComparator implements Comparator> {
public int compare(Entry o1, Entry o2) {
return o2.getValue() - o1.getValue();
}

你可能感兴趣的:(Java实现 统计单词出现的次数并按照单词频率从高到低输出)