package com.test.string;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class TesWordCount {
/**解题思路
* 1.先去取文件的问内容
* 2.对读取文件中的内容进行正则匹配【a-zA-Z】
* 3.用Map保存 单词 和出现的次数
* 4.自定义Comparator排序
* 5.把map中内容放到list中
* 6.对list进行Collections.sort() 进行自定义排序
* 7。输出排序后的内容
*
*
*
*
*
* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
@SuppressWarnings("resource")
BufferedReader buffer=new BufferedReader(new FileReader("d:/c.txt"));
StringBuffer sb=new StringBuffer();
String str=null;
while((str=buffer.readLine())!=null){
sb.append(str);
}
buffer.close();
Pattern pattern=Pattern.compile("[a-zA-Z]+");
Matcher matcher=pattern.matcher(sb.toString());
Map<String,Integer> map=new HashMap<String,Integer>();
String word="";
int count;
while(matcher.find()){
word=matcher.group();
//System.out.println("sr="+word);
if(map.containsKey(word)){
count=map.get(word);
map.put(word, count+1);
}else{
map.put(word, 1);
}
}
List<Map.Entry<String,Integer>> list=new ArrayList<Map.Entry<String,Integer>>(map.entrySet());
Collections.sort(list,new MyComparable());
int last=list.size()-1;
for(int i=last;i>last-5;i--){
System.out.println("key="+list.get(i).getKey()+" value="+list.get(i).getValue());
}
}
}
class MyComparable implements Comparator<Map.Entry<String,Integer>>{
@Override
public int compare(Entry<String, Integer> o1, Entry<String, Integer> o2) {
// TODO Auto-generated method stub
return o1.getValue().compareTo(o2.getValue());
}
}