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统计字符串中每个字符出现的次数)