案例:统计字符数量【Map集合练习】

案例:统计字符数量

需求:

  • 键盘录入一个字符串,要求统计字符串中每个字符串出现的次数。
  • 举例:键盘录入“aababcabcdabcde” 在控制台输出:“a(5)b(4)c(3)d(2)e(1)”

思路:

  • 实现统计,需要两列,故采用Map集合来统计,键可用来保存当前字符,值用来保存字符出现的次数(因为键不可重复,值可覆盖)

具体实现:

  1. 首先创建Scanner对象从键盘接收一个被统计的字符串
  2. 遍历该字符串,同时进行判断
    • 获取map的值,若为null 说明第一次存储,即将该键添加进集合 同时值为1
    • 若获取到的值不为null 取出值后+1再存回
  3. 此循环结束便统计了
  4. 拼接字符串 用StringBuild对象拼接 按照要求遍历即可
  5. 详细代码如下:

运行结果:
运行结果

package cn.dreamyi.demo1.doudizhu;

import java.util.Scanner;
import java.util.Set;
import java.util.TreeMap;

public class CountNums {
    
    
    public static void main(String[] args) {
    
    
        /**
         * - 案例需求
         *
         *   - 键盘录入一个字符串,要求统计字符串中每个字符串出现的次数。
         *   - 举例:键盘录入“aababcabcdabcde”  在控制台输出:“a(5)b(4)c(3)d(2)e(1)”
         *
         * -
         */

        //键盘接受一个字符串1
        String line = new Scanner(System.in).nextLine();
        TreeMap<Character, Integer> hm = new TreeMap<>();

        for (int i = 0; i < line.length(); i++) {
    
    
            Character c = line.charAt(i);//得到每个字符

            //首次存取
            if (hm.get(c) == null) {
    
    
                hm.put(c, 1);
            } else {
    
    
                //非首次
                Integer count = hm.get(c);
                count++;
                hm.put(c, count);
            }
        }

        StringBuilder sb = new StringBuilder();
        Set<Character> key = hm.keySet();
        for (Character c :key){
    
    
            sb.append(c).append("(").append(hm.get(c)).append(")");
        }

        String s = sb.toString();
        System.out.println(s);
    }
}

公众号:从简出发【mmk_xgg】
关注一起进步

关注一起进步呀

猜你喜欢

转载自blog.csdn.net/weixin_42143994/article/details/114038280