String result = sb.toString();String[] Str = result.split("[^A-Za-z0-9]"); //quanbu for(String string:Str){ singleSet.add(string);if("".equals(string)){   //这里是我加的,去除空格次数的处理 singleSet.remove("");} } Map map=new HashMap    
java计算一篇英文文档词频 并按出现次数从高到低输出以下基础上补充谢谢!
    String result = sb.toString();
   String[] Str = result.split("[^A-Za-z0-9]"); //quanbu
   for(String string:Str){
      singleSet.add(string);
      if("".equals(string)){    //这里是我加的,去除空格次数的处理
      singleSet.remove("");     
      }
   }
   
   Map<String, Integer> map=new HashMap<String, Integer>();
   for (String childString : singleSet){
   int count=0;
   for(String fatherString : Str){
   if(fatherString.equals(childString)){
   count++;
   }
   }
   map.put(childString, count);  //存储在hashmap中
   }
   
   ArrayList<Entry<String,Integer>> l = new ArrayList<Entry<String,Integer>>(map.entrySet());
 
 Collections.sort(l, new Comparator<Object>(){
             public int compare(Object e1, Object e2){
 int v1 = Integer.parseInt(((Entry<String,Integer>)e1).getValue().toString());
 int v2 = Integer.parseInt(((Entry)e2).getValue().toString());
 return v2-v1;   //改为v1-v2就是从小到大了
 
 }
 });
 
 for (Entry<String, Integer> e: l){
 System.out.println(e.getKey()+"  "+e.getValue());
 }
代码仅供参考!希望对你有用2012-10-13
程序很简单,建立两个数组,一个字符串数组,一个整型数组,出现的单词放在字符串数组,其出现次数放在下标相同的整型数组里,每读取一个单词,从字符串数组第一个开始比较,相同则次数加1,不同则和下一个比较,直到第一个空字符串都没有该单词出现,则在该空字符串填入该单词,对应下标的整型数组写1,如此循环,直至读取到文档结尾;然后,按统计的词频排序输出。2012-10-27
上面的代码是搞什么飞机啊?
你是想统计每个单词出现的频率,还是每个字母出现的频率?
String[] Str = sb.toString().split("[^A-Za-z0-9]");
你还搞个按\w的正则表达式拆分?你是要怎滴?我没看明白...2012-10-15