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<String, Integer> map=new HashMap<String, Integer>();
		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<Entry<String, Integer>> set=map.entrySet();
			List<Entry<String, Integer>> list=new 
					ArrayList<Entry<String,Integer>>(set);
			Collections.sort(list,new 
					Comparator<Entry<String, Integer>>() {
				public int compare(Entry<String, Integer> o1,
					Entry<String, Integer> o2) {
					int i=o1.getValue();
					int j=o2.getValue();
					if(i!=j){
						return i-j;
					}
					return o1.getKey().
							compareTo(o2.getKey());}});
			for(Entry<String, Integer> entry:list){
				String n=entry.getKey();
				Integer i=entry.getValue();
				System.out.println(n+":"+i);
			}
		} catch (IOException e) {
			e.printStackTrace();		
		}
	}
}


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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值