package xFTest;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

import org.junit.Test;

import junit.framework.TestCase;

public class TextTest extends TestCase{

	@Test
	public void test(){
		try{
			String encoding="GBK";
	        File file=new File("E://test.txt");
	        if(file.isFile() && file.exists()){ //判断文件是否存在
	            InputStreamReader read = new InputStreamReader(
	            new FileInputStream(file),encoding);//考虑到编码格式
	            BufferedReader bufferedReader = new BufferedReader(read);
	            String lineTxt = null;
	            HashMap<String ,Integer> has = new HashMap<String ,Integer> (); 
	            while((lineTxt = bufferedReader.readLine()) != null){
	               HashMap<String ,Integer> hasMap = this.StatList(lineTxt);
	               this.statMap(has, hasMap);
	            }
	            read.close();
	            List<Map.Entry<String, Integer>> list = this.sortMap(has);
	            this.printMap(list);
	        }else{
	        	System.out.println("找不到指定的文件");
	        }
		} catch (Exception e) {
			System.out.println("读取文件内容出错");
			e.printStackTrace();
		}
	}
	
	/**
	 * 对数组解析,将单词和数存入到map中
	 * @param str
	 * @return
	 */
	public  HashMap<String ,Integer> StatList(String str) {
		   HashMap<String ,Integer> has = new HashMap<String ,Integer> (); // 打开一个哈希表
		   String[] slist = str.split(" ");
		   for (int i = 0; i < slist.length; i++) {
		         if (!has.containsKey(slist[i])) { // 若尚无此单词
		                 has.put(slist[i], 1);
		         } else {//如果有,就在将次数加1
		                 has.put(slist[i],has.get(slist[i])+1 );
		        }
		     }
		return has;
		}
	
	/**
	 * 对map进行重新赋值
	 * @param has
	 * @param hasMap
	 * @return
	 */
	public HashMap<String,Integer> statMap(HashMap<String ,Integer> has, HashMap<String ,Integer> hasMap){
		 Iterator iterator = hasMap.keySet().iterator();
		 while(iterator.hasNext()){
	             String word = (String) iterator.next();
	            if (!has.containsKey(word)) { // 若尚无此单词
                 has.put(word, 1);
         } else {//如果有,就在将次数加1
                 has.put(word,has.get(word)+1 );
        }
	  }
	 return has;
	}
	
	/**
	 * 对map进行排序
	 * @param has
	 * @return
	 */
	public List<Map.Entry<String, Integer>> sortMap(HashMap<String ,Integer> has){
		List<Map.Entry<String, Integer>> infoIds =
			    new ArrayList<Map.Entry<String, Integer>>(has.entrySet());
		Collections.sort(infoIds, new Comparator<Map.Entry<String, Integer>>() {   
		    public int compare(Map.Entry<String, Integer> o1, Map.Entry<String, Integer> o2) {      
		        return (o2.getValue() - o1.getValue()); //按value排序
		        //return (o1.getKey()).toString().compareTo(o2.getKey());
		    }
		}); 
		return infoIds;
	}
	
	/**
	 * 打印输出结果
	 * @param list
	 */
	public void printMap(List<Map.Entry<String, Integer>> list){
		for(int i = 0 ; i <list.size();i++){
			System.out.println("单词:"+list.get(i).toString());
		}
	}
	
	
}
最近下载更多
wngauss  LV4 2020年3月23日
aisuzhen  LV10 2019年9月17日
liuyufei9797  LV1 2019年4月15日
duduyan  LV11 2018年11月2日
12miki  LV12 2018年2月12日
乞丐哥哥  LV23 2017年12月10日
wxsuperwx  LV17 2017年12月6日
soft5200  LV30 2017年12月4日
wgc_jy  LV21 2017年11月10日
酷睿科技  LV11 2017年10月11日
最近浏览更多
1waxzsq212345  LV2 1月16日
interface  LV22 2023年7月9日
xv123456  LV1 2023年6月1日
微信网友_6040315240812544  LV8 2022年10月31日
idm_Sure  LV3 2022年5月13日
暂无贡献等级
2898369623  LV1 2021年10月12日
huaua7676  LV30 2021年9月2日
mengfanyun  LV9 2021年6月18日
20210119yiyi 2021年1月19日
暂无贡献等级
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友