JAVA----统计字符串中每个字符出现的个数


需求:键盘录入一个字符串,要求统计每个字符出现的次数。
分析:
①要统计每个字符出现的次数,可以利用HashMap的键值对(HashMap的一个基本知识点),键设置为字符,值为出现的次数
②注意:键是字符,应该用它的包装类Character,而不用char 值也一样,应用包装类Integer
思路:
①键盘录入一个字符串
②创建HashMap集合,键是Character,值是Integer
③遍历字符串,得到每一个字符,利用方法 charAt(int index) 它的作用是获得索引对于的字符 范围是0-length-1
④拿得到的每一个字符作为键到HashMap集合中去找对于的值,看其返回值
如果返回null,则说明该字符在HashMap中不存在,那么以它为键,值定为1
如果返回不是null,则说明该字符在HashMap中存在,把其对应值加1,再重新存储该字符和对应的值 //重新存储便会出现键相同不覆盖,值不同而被覆盖
⑤遍历HashMap集合,得到键和值,按要求进行拼接 运用到StringBuilder方法 利用其append拼接
⑥输出结果
代码实现:

package Collection.Map;

import java.util.*;

public class emergeCount {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个字符串:");
String s = sc.nextLine();
// HashMap hm = new HashMap<>();//HashMap存储的键和值不会自动排序,而TreeMap和HashMap用法一致,但前者会进行自动排序
TreeMap hm = new TreeMap<>();
for (int i = 0; i < s.length(); i++) {
char key = s.charAt(i);//charAT返回指定索引处的char值索引范围为1——length-1 并将遍历得到的每一个字符设置为键(key)
Integer value = hm.get(key);//这里进行了自动装箱动作,把基本类型char装箱为了对应引用类型(也就是包装类型Integer)
if (value == null) {
hm.put(key, 1);
} else {
value++;
hm.put(key, value);
}
}
StringBuilder sb = new StringBuilder();
Set ks = hm.keySet();
for (Character character : ks) {
Integer value = hm.get(character);
sb.append(character).append("(").append(value).append(")");
}
String s1 = sb.toString();
System.out.println(s1);
}
}