金山网络2014春季Android实习生招聘-成都站-笔试第二题
2024-08-25 21:55:55
一个文件名为input.txt的文件当中,每一行都有一个单词,要求统计单词出现的频率,并且按照从小到大出现次数打印,次数相同的按照首字母顺序排序。
package jinshanwangluo.exam; import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
*
* @author guoxm
* @date 2014-12-16
*/
public class SortWords {
public static void main(String args[]){
try{
new SortWords().sortWordInFile();
}catch(IOException ex){
System.out.println("未找到相关文件");
ex.printStackTrace();
} } @SuppressWarnings("unchecked")
public void sortWordInFile() throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream("src/jinshanwangluo/exam/input.txt")));
//因为有单词出现次数相同的情况,因此不能用出现次数作为key
Map<String,Integer> hashmap = new HashMap<String,Integer>();
String word = null;
while((word = br.readLine())!= null){
if(hashmap.containsKey(word)){
hashmap.put(word,hashmap.get(word)+1);
}else{
hashmap.put(word,1);
}
}
List arrayList = new ArrayList(hashmap.entrySet());
Collections.sort(arrayList,new Comparator<Map.Entry>(){
public int compare(Map.Entry entry1, Map.Entry entry2) {
if(entry1.getValue() != entry2.getValue()){
return (Integer)entry1.getValue() - (Integer)entry2.getValue();
}else{
return ((String)entry1.getKey()).compareTo((String)entry2.getKey());
}
}
}); System.out.println(arrayList);
//此时ArrayList当中是Object对象
for(Object object : arrayList){
Map.Entry entry = (Map.Entry)object;
System.out.println(entry.getKey()+" " +entry.getValue());
}
}
}
主要难点在于针对HashMap的value值进行排序
最新文章
- GridControl读取xml和保存xml
- AngularJS 使用ngOption实现下拉列表
- Windows Server 2008 R2 创建辅助DNS服务器并接管主要DNS服务器
- javascript对json对象的序列化与反序列化
- Modules
- MySQL+Keepalived实现双机HA
- CSS中a标签样式的“爱恨”原则
- MVC中Url请求与控制器的默认约定
- html5 之 canvas 相关知识(三)API-strokeStyle-shadow相关
- [Webpack] Use the Webpack Dashboard to Monitor Webpack Operations
- allocator例子
- 2014-07-28 使用Axure RP进行手机端BBS的原型设计
- externkeyword放到函数体内而导致的linkage问题
- Python - 缩写(capwords) 和 创建转换表(maketrans) 详细说明
- iOS开发中使用文字图标iconfont
- JDBC详解系列(四)之建立Stament和执行SQL语句
- PHP全栈学习笔记6
- c++11の泛型算法
- Android中,粗暴的方式,修改字体
- java28