package com.cg.maptest;
import java.util.Map;
import java.util.Scanner;
import java.util.Set;
import java.util.TreeMap;
/**
* @author life
* @create 2019-11-27 16:40
* * 需求 :"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:把字符串缓冲区转换为字符串输出
*/
public class TreeMapDemo {
public static void main(String[] args) {
//键盘输入一个字符串
Scanner scanner = new Scanner(System.in);
System.out.println("请输入一个字符串: ");
//定义一个字符串
String string = scanner.next();
//定义一个TreeMap集合
Map<Character,Integer> map = new TreeMap<>();
//把字符串转为Char数组
char[] chars = string.toCharArray();
//遍历字符数组
for(char ch : chars){
if (!map.containsKey(ch)){
map.put(ch,1);
}else{
map.put(ch,map.get(ch)+1);
}
}
Set<Character> set = map.keySet();
for (Character character:set){
System.out.println(character+"("+map.get(character)+")");
}
}
}