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


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

     

  • 相关阅读:
    linux杂记
    mysql 备份命令
    查看mysql 套接字文件 mysql.sock
    处理下载是文件名乱码正确姿势
    对象创建完成后进行数据同步
    python——数据库编程
    python——网络编程2
    python——网络编程
    python——12、面向对象
    pythoning——11、正则匹配
  • 原文地址:https://www.cnblogs.com/wuxinliulei/p/4168230.html
Copyright © 2020-2023  润新知