步骤分析
1、给出一串字符串,字符串中可以包含字母、数字、符号等等。
2、创建一个Map集合,key是字符串中的字符,value是字符的个数。
3、遍历字符串,获取每一个字符。
5、使用获取到的字符,去集合Map判断key(字符)是否存在。
6、假如key(字符)存在,那么该key对应的value数值增加1,即该字符的数量加一。
7、假如key(字符)不存在,value的值设为1,并将key-value添加到Map集合中。
8、遍历Map集合,输出每个字符个数的结果。
代码实现
创建一个CharNumber类,在类中定义keyValue方法,计算字符串中每个字符的个数
public classCharNumber {/*** 计算字符串中每个字符的个数
*@paramstring 要被计算字符个数的字符串
*@return 的Map集合*/
public static HashMapkeyValue(String string) {//字符串转换为字符数组
char[] chars =string.toCharArray();//创建一个Map集合用来存放记录
HashMap hashMap = new HashMap<>();//遍历字符串,获取每一个字符
for (charc : chars) {//使用获取到的字符,去Map集合判断key是否存在//利用Map集合的containsKey()方法,判断key是否存在//如果存在 value ++,如果不存在 value = value
if(hashMap.containsKey(c)) {//key存在,获取key对应的value,数值增加一,然后再更新到集合中
Integer value =hashMap.get(c);
value++;
hashMap.put(c, value);
}else{//key不存在,将key添加到Map集合中,且其对应的value为1
hashMap.put(c, 1);
}
}returnhashMap;
}
}
创建一个CharNumber类,在类中定义iteratorMap方法,遍历输出计算结果
public classCharNumber {/*** 遍历输出Map集合
*@paramhashMap 的Map集合*/
public static void iteratorMap(HashMaphashMap) {//调用Map集合的entrySet()方法,获取集合Map的Key-Value,赋值给Set集合
Set> set =hashMap.entrySet();//创建Set集合的迭代器
Iterator> kvIterator =set.iterator();//迭代输出Set集合//hasNext():是否存在下一个元素//next():获取下一个元素
while(kvIterator.hasNext()) {
Map.Entry kv =kvIterator.next();
System.out.println("字符'" + kv.getKey() + "'的个数是:" +kv.getValue());
}
}
}
测试一下CharNumber类,随便输入一串字符串,计算每个字符的个数
public classDemoCharNumber {public static voidmain(String[] args) {
Scanner scn= newScanner(System.in);
System.out.print("请输入一个字符串:");
String string=scn.next();
CharNumber.iteratorMap(CharNumber.keyValue(string));
}
}
运行代码(注意,不能输入空格):
请输入一个字符串:dafsdaganjsda!!!!!!字符'a'的个数是:4字符'!'的个数是:6字符's'的个数是:2字符'd'的个数是:3字符'f'的个数是:1字符'g'的个数是:1字符'j'的个数是:1字符'n'的个数是:1
代码总和
CharNumber类
importjava.util.HashMap;importjava.util.Iterator;importjava.util.Map;importjava.util.Set;public classCharNumber {public static HashMapkeyValue(String string) {char[] chars =string.toCharArray();
HashMap hashMap = new HashMap<>();for (charc : chars) {if(hashMap.containsKey(c)) {
Integer value=hashMap.get(c);
value++;
hashMap.put(c, value);
}else{
hashMap.put(c,1);
}
}returnhashMap;
}public static void iteratorMap(HashMaphashMap) {
Set> set =hashMap.entrySet();
Iterator> kvIterator =set.iterator();while(kvIterator.hasNext()) {
Map.Entry kv =kvIterator.next();
System.out.println("字符'" + kv.getKey() + "'的个数是:" +kv.getValue());
}
}
}
DemoCharNumber类
//测试
importjava.util.Scanner;public classDemoCharNumber {public static voidmain(String[] args) {
Scanner scn= newScanner(System.in);
System.out.print("请输入一个字符串:");
String string=scn.next();
CharNumber.iteratorMap(CharNumber.keyValue(string));
}
}