A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始


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();
        }
}


0 个回复

您需要登录后才可以回帖 登录 | 加入黑马