您的位置:首页 > 编程语言 > Java开发

给定一篇英文文章,找出其中使用频率最高的英语单词。

2015-11-17 19:40 736 查看
这道题,对于学java的练习的学友来说是一道不可缺少的题目,这一道题,我刚一开始接触的时候认为挺简单的一道题,但是在做的时候发现了很多问题,其中对于map的运用,对于遍历的操作,以及对键值对的理解等。

“`

import java.io.BufferedReader;

import java.io.FileReader;

import java.security.KeyStore.Entry;

import java.util.ArrayList;

import java.util.Collections;

import java.util.HashMap;

import java.util.Iterator;

import java.util.List;

import java.util.Map;

import java.util.Set;

import java.util.StringTokenizer;

public class Map_t {

public static void main(String[] args) throws Exception {

BufferedReader reader = new BufferedReader(new FileReader("1.txt"));//1.txt是在同一目录下的。
StringBuffer buffer = new StringBuffer();
String line = null;
while ((line = reader.readLine()) != null) {
buffer.append(line);
}
reader.close();//以上是对文件的读取,就是读取文章
String string = buffer.toString();
String[] word = new String[1000];//定义一个数组,来储存文章中的单词,没有用List,感觉用集合的话更好,这里有限制,是1000.
StringTokenizer st = new StringTokenizer(string,";!., ");//去除文章中的几个符号,当然这只是一些符号,还有一些没有写上,所以不全面。
Map<String,Integer>m = new HashMap<String,Integer>();
int x = 0;
while( st.hasMoreElements() ){
String w = st.nextToken();
word[x] = w;
m.put(w, 0);//哈希的方法将重复的单词去除,存入m中。
x++;
}
Set<String> set = m.keySet();
for(int i=0;word[i]!=null;i++){
Iterator<String> it = set.iterator();
while(it.hasNext()){//遍历找出每个单词有多少个
String k = it.next();
if(word[i].equals(k)){
int c = m.get(k);
c++;
m.put(word[i],c);

}
}

}
int value=0;
String maxKey = null;
Iterator itor=m.entrySet().iterator();
List list=new ArrayList();
while(itor.hasNext()){ //在遍历让找出最多的单词有几个。

Map.Entry<String,Integer> entry=(Map.Entry<String,Integer>)itor.next();
list.add(entry.getValue());

Collections.sort(list);

value = Integer.parseInt(list.get(list.size()-1).toString());
}

Iterator it=m.entrySet().iterator();
while (it.hasNext()){//遍历找出最多的数对应的单词。
Map.Entry mapentry = (Map.Entry) it.next();
if((int)mapentry.getValue()==value){
System.out.println(mapentry.getKey() ``


“/” + mapentry.getValue());

}
}
}


}
“`上面是代码,当然还是有一定的不足,我认为写的有点复杂了,暂时没有想到更好的方法,也希望谁有更好的方法告诉我,其中运用了很多集合中的知识。学到的也挺多。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java 遍历