• Java基础知识强化之集合框架笔记61:Map集合之统计字符串中每个字符出现的次数的案例


    1. 首先我们看看统计字符串中每个字符出现的次数的案例图解:

    2. 代码实现:

    (1)需求 :"aababcabcdabcde",获取字符串中每一个字母出现的次数要求结果:a(5)b(4)c(3)d(2)e(1)

    分析:
       A 定义一个字符串(可以改进为键盘录入)
       B 定义一个TreeMap集合
                键 Character
                值:Integer
       C 把字符串转换为字符数组
       D: 遍历字符数组,得到每一个字符
       E: 拿刚才得到的字符作为键到集合中去找值,看返回值
                    是null说明该键不存在,就把该字符作为键,1作为值存储
                 不是null说明该键存在,就把值加1,然后重写存储该键和值
       F: 定义字符串缓冲区变量
       G遍历集合,得到键和值,进行按照要求拼接
       H把字符串缓冲区转换为字符串输出

     录入:linqingxia
     结果:result:a(1)g(1)i(3)l(1)n(2)q(1)x(1)

    (2)代码实现:

     1 package cn.itcast_05;
     2 
     3 import java.util.Scanner;
     4 import java.util.Set;
     5 import java.util.TreeMap;
     6 
     7 /*
     8  * 需求 :"aababcabcdabcde",获取字符串中每一个字母出现的次数要求结果:a(5)b(4)c(3)d(2)e(1)
     9  * 
    10  * 分析:
    11  *         A:定义一个字符串(可以改进为键盘录入)
    12  *         B:定义一个TreeMap集合
    13  *             键:Character
    14  *             值:Integer
    15  *         C:把字符串转换为字符数组
    16  *         D:遍历字符数组,得到每一个字符
    17  *         E:拿刚才得到的字符作为键到集合中去找值,看返回值
    18  *             是null:说明该键不存在,就把该字符作为键,1作为值存储
    19  *             不是null:说明该键存在,就把值加1,然后重写存储该键和值
    20  *         F:定义字符串缓冲区变量
    21  *         G:遍历集合,得到键和值,进行按照要求拼接
    22  *         H:把字符串缓冲区转换为字符串输出
    23  * 
    24  * 录入:linqingxia
    25  * 结果:result:a(1)g(1)i(3)l(1)n(2)q(1)x(1)
    26  */
    27 public class TreeMapDemo {
    28     public static void main(String[] args) {
    29         // 定义一个字符串(可以改进为键盘录入)
    30         Scanner sc = new Scanner(System.in);
    31         System.out.println("请输入一个字符串:");
    32         String line = sc.nextLine();
    33 
    34         // 定义一个TreeMap集合
    35         TreeMap<Character, Integer> tm = new TreeMap<Character, Integer>();
    36         
    37         //把字符串转换为字符数组
    38         char[] chs = line.toCharArray();
    39         
    40         //遍历字符数组,得到每一个字符
    41         for(char ch : chs){
    42             //拿刚才得到的字符作为键到集合中去找值,看返回值
    43             Integer i =  tm.get(ch);
    44             
    45             //是null:说明该键不存在,就把该字符作为键,1作为值存储
    46             if(i == null){
    47                 tm.put(ch, 1);
    48             }else {
    49                 //不是null:说明该键存在,就把值加1,然后重写存储该键和值
    50                 i++;
    51                 tm.put(ch,i);
    52             }
    53         }
    54         
    55         //定义字符串缓冲区变量
    56         StringBuilder sb=  new StringBuilder();
    57         
    58         //遍历集合,得到键和值,进行按照要求拼接
    59         Set<Character> set = tm.keySet();
    60         for(Character key : set){
    61             Integer value = tm.get(key);
    62             sb.append(key).append("(").append(value).append(")");
    63         }
    64         
    65         //把字符串缓冲区转换为字符串输出
    66         String result = sb.toString();
    67         System.out.println("result:"+result);
    68     }
    69 }

    运行效果,如下:

  • 相关阅读:
    oracle 17068
    Nginx
    B/S端开发工具DevExtreme Angular控件
    UI组件库Kendo UI for Angular入门指南教程
    DevExpress WinForms v21.1
    WPF应用界面开发入门教程
    界面控件Telerik UI for WinForm初级教程
    十六、内联style.html
    十五、css样式class的多种用法
    十四、系统修饰键
  • 原文地址:https://www.cnblogs.com/hebao0514/p/4865713.html
Copyright © 2020-2023  润新知