时间原因,我就实现了最基本功能,但是运行了没有问题。
对异常直接抛出了,TreeMap也没有构造比较器,凑合着看吧,思路还是很清晰的。
重要的是领会思路。不多说了,代码奉上,抛砖引玉吧。- /*
- 大致思路:
- 1.使用IO流与文件关联,为了提高效率和使用readLine方法,此时使用了包装设计模式
- 2.对每次读到的line使用Map键值对进行存储和计数。
- 3.关闭资源
- */
- //计数方法:
- public static void countChar()throws Exception
- {
- //1.关联要读取的文件
- BufferedReader bufr = new BufferedReader(new InputStreamReader(new FileInputStream("MapSpread.java")));
- //2、定义存储的map集合,使用的是默认排序
- TreeMap<Character,Integer> tm = new TreeMap<Character,Integer>();
- String line = null;
- int count = 1;
- //3。此处最为关键,循环读写文件并存进map然后计数
- while((line=bufr.readLine())!=null)
- {
- for (int i=0; i<line.length(); i++)
- {
- Character key = line.charAt(i);
- if(!tm.containsKey(key))
- tm.put(key,count);
- else
- tm.put(key,tm.get(key)+1);
- count = 1;
- }
- }
- //4。关闭资源:
- bufr.close();
- //5。调用方法打印字符个数:
- printMap(tm);
- }
- //打印map集合
- public static void printMap(Map<Character,Integer> map)
- {
- Set<Map.Entry<Character,Integer>> entrySet = map.entrySet();
- for (Iterator<Map.Entry<Character,Integer>> it=entrySet.iterator(); it.hasNext(); )
- {
- Map.Entry<Character,Integer> me = it.next();
- Character key = me.getKey();
- int countValue = me.getValue();
- System.out.print(key+"("+countValue+")\t");
- }
- }
复制代码 |