* 思路:
* 1:使用Scanner获取用户输入的一个字符串
* 2:下面使用HashMap集合以键值对记录每个字符及对应的数量
* 3:首先需要遍历字符串,获取每一个字符,由两种方式:
* i.String类的toCharArray方法,把字符串转换为数组,遍历数组即可。
* ii.String类的length方法加上charAt(索引)来获取每一个字符。
* 4:使用Map集合中方法判断获取到的字符串(key)是否存储在Map集合中
* i.使用Map集合中containsKey(获取的字符串)方法,返回布尔值
* true:字符存在
* 则通过字符(key),获取value(统计个数),
* 把value++,
* 把新的value存储到Map集合
* false:字符不存在
* 则把字符作为key,把1作为value存储到Map集合
* ii.或也可以使用Map集合中get(key)方法
* 返回null,表示key不存在,把对应键值对加入集合
* 返回不是null,则找到key对应的value自增后再存入集合。
public class Demo9_lianxi {
public static void main(String[] args) {
//1.使用Scanner获取用户输入的字符串
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个字符串");
String str = sc.next();
//2.创建Map集合,key是字符串的字符,value是字符个数
HashMap<Character, Integer> map = new HashMap<>();
//3.遍历字符串,获取每一个字符
for (char c:str.toCharArray()){
//4.使用获取到的字符,去Map集合判断key是否存在
if (map.containsKey(c)){
//key存在
Integer value = map.get(c);
value++;
map.put(c,value);//覆盖之前的键值对
}else{
//key不存在
map.put(c,1);
}
}
/*for (Character key : map.keySet()) {
Integer value = map.get(key);
System.out.println(key+":"+value);
}*/
System.out.println(map);
/*输入asdfgasdfghj
* 输出{a=2, s=2, d=2, f=2, g=2, h=1, j=1}
* */
}
}