一个文件名为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值进行排序

最新文章

  1. GridControl读取xml和保存xml
  2. AngularJS 使用ngOption实现下拉列表
  3. Windows Server 2008 R2 创建辅助DNS服务器并接管主要DNS服务器
  4. javascript对json对象的序列化与反序列化
  5. Modules
  6. MySQL+Keepalived实现双机HA
  7. CSS中a标签样式的“爱恨”原则
  8. MVC中Url请求与控制器的默认约定
  9. html5 之 canvas 相关知识(三)API-strokeStyle-shadow相关
  10. [Webpack] Use the Webpack Dashboard to Monitor Webpack Operations
  11. allocator例子
  12. 2014-07-28 使用Axure RP进行手机端BBS的原型设计
  13. externkeyword放到函数体内而导致的linkage问题
  14. Python - 缩写(capwords) 和 创建转换表(maketrans) 详细说明
  15. iOS开发中使用文字图标iconfont
  16. JDBC详解系列(四)之建立Stament和执行SQL语句
  17. PHP全栈学习笔记6
  18. c++11の泛型算法
  19. Android中,粗暴的方式,修改字体
  20. java28

热门文章

  1. jmeter参数化数据(_csvread函数、用户自定义变量等)
  2. Char* ,CString ,WCHAR*之间的转换
  3. MVC入门教程-视图中的Layout使用
  4. cookie 和 HttpSession
  5. CentOS 更新yum源
  6. 如何正确合理的建立MYSQL数据库索引
  7. HDU2088JAVA2
  8. Java基础知识强化之网络编程笔记07:TCP之服务器给客户端一个反馈案例
  9. Navicat 看历史执行SQL
  10. Java-struts2 配置hellow world