Java简单统计文本字数方法


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;
import java.util.Map.Entry;
import java.util.Set;

/**
 * 简单统计文件字数
 * @author huawangxin
 *
 * 2016年11月23日 上午1:02:42
 */
public class Test {
/*
 * 从source.txt中读取出所有的姓名,
 * 并打印出重复的姓名和重复的次数,并按重复次数排序,
 * 如果次数相同按姓名字母排序.
	  source.txt内容如下:
		1,zhangsan,28
		2,lisi,35
		3,zhangsan,28
		4,wangwu,35
		5,zhangsan,28
		6,lisi,35
		7,zhaoliu,28
		8,tianqi,35
 */
	public static void main(String[] args) {
		Map map=new HashMap();
		try {
			BufferedReader br=new BufferedReader(
					new InputStreamReader(
				new FileInputStream("demo.txt")));
			String s=null;
			String name=null;
			while((s=br.readLine())!=null){
				name=s.split(",")[1];
				if(map.containsKey(name)){
					map.put(name, map.get(name)+1);
				}else{
					map.put(name, 1);
				}
			}
			Set> set=map.entrySet();
			List> list=new 
					ArrayList>(set);
			Collections.sort(list,new 
					Comparator>() {
				public int compare(Entry o1,
					Entry o2) {
					int i=o1.getValue();
					int j=o2.getValue();
					if(i!=j){
						return i-j;
					}
					return o1.getKey().
							compareTo(o2.getKey());}});
			for(Entry entry:list){
				String n=entry.getKey();
				Integer i=entry.getValue();
				System.out.println(n+":"+i);
			}
		} catch (IOException e) {
			e.printStackTrace();		
		}
	}
}


上述如果有不对或者补充的地方,请大家批评和指教,谢谢。


你可能感兴趣的:(java)