条件限制,我这里没法测试读取文件的部分,https://www.jianshu.com/p/72d37777c417 自己参考完善下,之后的程序已经帮你改写
import java.util.HashMap;
import java.util.regex.*;
import java.util.Map;
import java.util.*;
class HelloWorld {
public static void main(String []args) {
String s = "someone says: hello world! hello, this website hello the people this is the java language.";
Pattern pattern = Pattern.compile("[a-z]{2,}");
Matcher matcher = pattern.matcher(s);
Map<String, Integer> map = new HashMap<>();
while (matcher.find()) {
String word = matcher.group(0).toLowerCase();
if(!map.containsKey(word))
{
map.put(word, 1);
}
else
{
int times = map.get(word) + 1;
map.remove(word);
map.put(word, times);
}
}
//System.out.println(map);
List<Map.Entry<String, Integer>> list = new ArrayList<Map.Entry<String, Integer>>(map.entrySet());
list.sort(new Comparator<Map.Entry<String, Integer>>() {
@Override
public int compare(Map.Entry<String, Integer> o1, Map.Entry<String, Integer> o2) {
return o2.getValue().compareTo(o1.getValue());
}
});
for (Map.Entry<String, Integer> mapping : list){
System.out.println(mapping.getKey()+" - "+mapping.getValue());
}
}
}
hello - 3
the - 2
this - 2
website - 1
world - 1
java - 1
someone - 1
is - 1
language - 1
says - 1
people - 1