Java簡單統計文字字數方法
阿新 • • 發佈:2019-02-01
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(); } } }
上述如果有不對或者補充的地方,請大家批評和指教,謝謝。