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

金山网络2014春季Android实习生招聘-成都站-笔试第二题的更多相关文章

  1. 金山网络2014春季Android实习生招聘-成都站-笔试第一题

    实现单例模式,并实现方法int getResult(float a),将a*8后返回. package jinshanwangluo.exam; /** * @author guoxm * @date ...

  2. 2014年百度之星程序设计大赛 - 资格赛 第二题 Disk Schedule

    双调欧几里得旅行商问题是一个经典动态规划问题.<算法导论(第二版)>思考题15-1和北京大学OJ2677都出现了这个题目. 旅行商问题描写叙述:平面上n个点,确定一条连接各点的最短闭合旅程 ...

  3. java笔试题(金山网络)

    今天参加金山的校园招聘,java笔试,回来仔细研究实现一下: 题目1:工厂两条生产线,三个工人,生产线上可以最多存放m个产品,当生产线满时,机器停止生产,等产品线不满时才继续生产,每条产线上一次只能允 ...

  4. 2014腾讯实习生笔试题——define与typedef

    2014腾讯实习生笔试(广州站)第26题填空题: #define MAX_NUM 1000+1 int Temp = Max_NUM*10; 则Temp的值为( ) 答案是:1010, 由于宏定义仅仅 ...

  5. Android实习生 —— 屏幕适配及布局优化

    为什么要进行屏幕适配.对哪些设备进行适配?在近几年的发展当中,安卓设备数量逐渐增长,由于安卓设备的开放性,导致安卓设备的屏幕尺寸大小碎片化极为严重.从[友盟+]2016年手机生态发展报告H1中看截止1 ...

  6. Android系统研究资料收集---站在前人的肩膀上

    Android系统研究资料收集---站在前人的肩膀上 针对Android系统研究任务,收集高价值资料在本页更新 AuthBlog:秋城https://www.cnblogs.com/houser032 ...

  7. Java实习生常规技术面试题每日十题Java基础(八)

    目录 1.解释内存中的栈(stack).堆(heap)和静态区(static area)的用法. 2.怎样将GB2312编码的字符串转换为ISO-8859-1编码的字符串? 3.运行时异常与受检异常有 ...

  8. Cloud Foundry 中国群英会【上海站、成都站】资料宣传

    关注云计算和PaaS层的童鞋可以了解下: http://www.cloudfoundry-heroes-summit.com/shanghai http://www.cloudfoundry-hero ...

  9. 大课深度复盘、解密研发效率之道 | 第42届MPD工作坊成都站日程公布!

    互联网时代,随着区块链.大数据.人工智能等技术的快速发展,产品迭代速度飞快.在这样的市场环境下,提升研发效率.降低研发成本,同时支撑业务的快速发展,是每个企业都追求的目标之一. 大中型企业如何快速转型 ...

随机推荐

  1. GWT 实现文件上传和下载

    首先下载两个包 commons-fileupload-?.jar和commons-io-?.jar  将他们配置到你的项目中 先把它们放在 "项目名/war/WEB-INF/lib" ...

  2. Response乱码的解决方法

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletExcept ...

  3. thinking in java 读书笔记 --- overriding private method

    一个对象可以被用作它自身的类型或者是它的基类类型.当用作它的基类类型时叫做upcasting,如下所示 BaseClass ref = new DerivedClass()  //upcasting ...

  4. Java实现直接插入查找

    import java.util.Scanner; /*算法思想:每趟将一个待排序的元素作为关键字,按照关键字值大小插入到已排好序的那部分序列的适当位置上,直到插入完成,*/ /*平均时间复杂度O(n ...

  5. js中跨域请求原理及2种常见解决方案

    一.同源策略: 说到跨域请求,首先得说说同源策略: 1995年,同源政策是由 Netscape 公司引入浏览器的.目前,所有浏览器都实行了这个政策. 同源策略是浏览器的一种安全策略,所谓同源是指,域名 ...

  6. jQuery 取值、赋值的基本方法【转藏】

    /*获得TEXT.AREATEXT的值*/ var textval = $("#text_id").attr("value"); //或者 var textva ...

  7. SQL 中case when then else 用法

    SQL如下: SELECT DISTINCTsy_haken_type,sy_sagyo_type,sy_kokyaku_cdFROm tbl_syukeiWHERE (sy_sagyo_ymd be ...

  8. 样式优先级、margin

    margin:上 左 下 右:

  9. html复选框多行排列布局

    前言:写这篇文章,主要是在于总结一下自己的心得体会... 公司的产品需要实现操作权限配置,我们实现的方式是,左边是“产品”=>“模块”树,右边是由“菜单”和“按钮”复选框按钮.如下图:

  10. jquery 中$('.ui-selecter',this)这样写 是什么意思 求解释 见到都是这种$("div")

    如果用$("div")是拿选择所有的div$('.ui-selecter',this)选择的是现在选项中的child里面class是ui-selecter的意思跟jQuery(th ...