集合框架(TreeMap统计字符串中每个字符出现的次数)

集合框架(TreeMap统计字符串中每个字符出现的次数)

package Day18;

import java.util.Scanner;
import java.util.Set;
import java.util.TreeMap;
/*
* 分析:
*    A:首先键盘输入一个字符串
*    B:创建一个TreeMap集合---键唯一---键值覆盖--自然排序
*    C:将输入的字符串转换为字符数组
*    D: 对字符数组进行遍历获取每个字符
*    E:利用获取的每个字符来获取集合中的键值
*            A:如何键值返回的null则将该字符添加到集合的键中--并将键值赋值为1
*            B:如果返回值不为null则将返回值进行加1
* 、         C:此时添加集合的键是字符--键值是返回值加1
*            D:同一个键实现键值的覆盖
*    F:创建字符缓冲区---进行输出字符的拼接----(拼接比较特别)
*    G:遍历TreeMap集合--遍历的键和键值拼接添加到字符缓冲区
*    H: 将字符缓冲的元素---转化为字符串
*    I: 输出字符串得到最终结果
*
*   G:
* */
public class Map8 {
    public static void main(String[] args) {
        //键盘输入字符串
        Scanner sc = new Scanner(System.in);
        //提示用户输入一段字符串
        System.out.println("请你输入一段字符串");
        //定义键盘输入对象的类型--字符串
        String line = sc.nextLine();

        //创建一个TreeMap集合进行
        //键和键值的类型都为引用类型
        //其中的键的类型是char的封装类Character也就是引用类
        //键值的类型是int类型的封装类Integer
        TreeMap<Character,Integer> AA = new TreeMap<Character, Integer>();

        //将字符串转换为字符数组
        char [] arr = line.toCharArray();
        //对这个字符数组进行遍历---获取每个字符
        //使用增强for
        for(char e: arr){
            //获取的字符向集合中寻找键值
           Integer SM = AA.get(e);
           //对获取的键值进行判断
            //判断键值是否为null--如果为null则将该字符添加为键--键值设置为1
            if(SM==null){
                AA.put(e,1);
            }else{
                //如果键值不为null--说明集合中已经存在该建值
                //这是的我们只需要进行键值的覆盖---使用同一个键--赋值不同的值
                SM++;
                AA.put(e,SM);
            }
        }
        //创建字符串缓冲区---进行最后遍历数据的拼接
        StringBuilder  AB = new StringBuilder();
        //遍历TreeMap集合--获取键和值
        //获取键的集合
        Set<Character> ABC = AA.keySet();
        //对获取的键--进行遍历
        for(Character w: ABC){
            //根据键--找到对应的键值 --键值的类型是Integer
            Integer F = AA.get(w);
            //输出查看键和键值
           //System.out.println(w+"---"+F);

            //对遍历的集合的键和值进行字符串的拼接----请仔细观察此字符串
            AB.append(w).append("(").append(F).append(")");
        }
        //把字符串缓冲区的元素转化为字符串进行输出
        String result = AB.toString();
        System.out.println(result);


    }
}
hmoban主题是根据ripro二开的主题,极致后台体验,无插件,集成会员系统
自学咖网 » 集合框架(TreeMap统计字符串中每个字符出现的次数)