package com.itheima.demo10maptest;
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
/**
* 输入一个字符串,统计该字符出现的字数
*/
/**
* @author ChenY@itheima.com
* @date 2022/7/28 19:52
*/
public class Test {
public static void main(String[] args) {
System.out.println("请输入一个字符串: ");
/** 定义map双列集合,借助双列集合的键重复 值会被覆盖的原理 */
HashMap<Character, Integer> hmMap = new HashMap<>(16);
String str = new Scanner(System.in).next();
/** 循环遍历出字符串中的每个字符*/
for (int i = 0; i < str.length(); i++) {
char ch = str.charAt(i);
/** 判断双列集合中,是否存在该字符
* 若存在,则将该键对应的值取出来,+1,
* 若不存在,则将该字符作为键存入到双利集合中去,将键对应的值+1*/
boolean flag = hmMap.containsKey(ch);
if (flag) {
/** 该字符在集合中已经存在 取出键对应的值*/
Integer value = hmMap.get(ch);
value++;
/** 在将ch 和value作为键和值存储到集合中去*/
hmMap.put(ch, value);
} else {
/** 该字符在集合中不存在,要存进集合 个数+1*/
hmMap.put(ch, 1);
}
}
System.out.println(hmMap);
}
}
总结: 利用双集合的 键和值的特点 键重复了值就会被覆盖
1.遍历字符串中的字符
2.判断字符是否在双列集合中
3.若在 取出该字符(键)对应的值,将值+1,在重型将键和值put 到集合中去
4.若不在,则只需将该字符作为键,1作为值 put到集合中去
#你为什么选择硬件行业#