给定一篇英文文章,找出其中使用频率最高的英语单词。
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 {
“/” + mapentry.getValue());
}
}
}
“`上面是代码,当然还是有一定的不足,我认为写的有点复杂了,暂时没有想到更好的方法,也希望谁有更好的方法告诉我,其中运用了很多集合中的知识。学到的也挺多。
“`
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对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- 插入排序
- 冒泡排序
- 堆排序
- 快速排序
- 二叉查找树
- [原创]java局域网聊天系统