思路:用hashmap 中的键 表示某个字符,有value表示出现的次数,然后按照value值进行排序。
用value值进行排序,就要把map转化成list
然后用Collectios.sort(list,comparator)进行排序
1.1要统计的文件位置如下
1.2 要统计的文件内容如下
errlog
22
22
22
22
22
222
11
22
33
1
4
5
7
8
9
10
11
111
33
44
555
66
77
99
99
110
2.1
代码如下
//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by Fernflower decompiler)
//
package test16;import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.net.URL;
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.Entry;public class TxtTest {public TxtTest() {}public static void txt2String(File file) {HashMap hashMap = new HashMap();try {
//读取文件BufferedReader br = new BufferedReader(new FileReader(file));String s = null;while((s = br.readLine()) != null) {int i = (new Integer(s)).intValue();if (!hashMap.containsKey(i)) {hashMap.put(i, Integer.valueOf(1));} else {int value = ((Integer)hashMap.get(i)).intValue();++value;hashMap.put(i, value);}}br.close();} catch (Exception var8) {var8.printStackTrace();}
//排序List
//输出前5行int i &#61; 0;for(Iterator iterator &#61; list.iterator(); iterator.hasNext() && i <5; &#43;&#43;i) {Entry entry &#61; (Entry)iterator.next();int key &#61; ((Integer)entry.getKey()).intValue();int value &#61; ((Integer)entry.getValue()).intValue();System.out.println(value &#43; "个 " &#43; key);}}public static void main(String[] args) {URL url &#61; Thread.currentThread().getContextClassLoader().getResource("");url.getPath();File file &#61; new File(url.getPath() &#43; "test16//errlog");txt2String(file);}
}
3.1运行结果