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