黑马程序员技术交流社区

标题: 统计一串字符串中每个字符出现的次数并写到文件上案例 [打印本页]

作者: 李志慧    时间: 2015-11-4 00:18
标题: 统计一串字符串中每个字符出现的次数并写到文件上案例

import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.util.TreeMap;

public class Demo3_HashMap {
        /**
         * 打印出字符串"abbbbbccccdddee26"中每个字符出现的次数,要求输出格式:"a(1)b(5)c(4)d(3)e(2)2(1)6(1)"
         *
         *
         * 此题要求有顺序,所以采用LinkedHashMap实现
         * @throws IOException
         */
        public static void main(String[] args) throws IOException {
                // 1,定义一个需要被统计字符的字符串
                String s = "abbbbbccccdddee";
                // 2,将字符串转换为字符数组
                char[] arr = s.toCharArray();
                // 3,定义双列集合,存储字符串中字符以及字符出现的次数
                TreeMap<Character, Integer> map = new TreeMap<>();
                // 4,遍历字符数组获取每一个字符,并将字符存储在双列集合中
                for (char c : arr) {
                        // 5,存储过程中要做判断,如果集合中不包含这个键,就将该字符当作键,值为1存储,如果集合中包含这个键,就将值加1存储
                        if (!map.containsKey(c)) { // 如果不包含这个键
                                map.put(c, 1);
                        } else {
                                map.put(c, map.get(c) + 1);//包含这个键
                        }
                }
                // 6,遍历集合将键和值拼接起来
                StringBuilder sb = new StringBuilder();
                for (Character key : map.keySet()) { // hm.keySet()代表所有键的集合
                        sb.append(key + "(" + map.get(key) + ")");
                }
               
                // 输出结果
                System.out.println(sb);
               
                // 创建输出流对象写入文件
                BufferedWriter bw = new BufferedWriter(new FileWriter("result.txt"));
               
                bw.write(sb.toString());
                //关流
                bw.close();
        }
}







欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2