功能说明
例如 输入字符串 “aaaabbbccddd” , 得到结果 :
a : 4个, b : 3个, c : 2个, d : 3个
分析
获取一个字符串对象创建一个Map集合,键代表字符,值代表次数。
遍历字符串得到每个字符。
判断Map中是否有该键。
如果没有,第一次出现,存储次数为1;
如果有,则说明已经出现过,获取到对应的值进行++,再次存储。
打印最终结果
public class HashMapDemo {
public static void main(String[] args) {
//键盘录入一个字符串
Scanner sc=new Scanner(System.in);
System.out.println("请输入一个字符串");
String line=sc.nextLine();
//创建HashMapDemo集合,键是Character,值是Integer
HashMap<Character,Integer>hm=new HashMap<Character,Integer>();
//便历一个字符串,得到每一个字符串
for(int i=0;i<line.length();i++) {
char key = line.charAt(i);
//拿得到的每一个字符作为键到HashMap集合中去寻找对应的值,看其返回值
Integer value = hm.get(key);
if (value == null) {
//如果返回值不是null,说明该字符串在HashMap集合中不存在,就把字符串作为键,1作为值存储
hm.put(key, 1);
} else {
//如果返回值是null,说明该字符串在HashMap集合中存在,把该值加1,然后重新存储该字符和对应的值
value++;
hm.put(key, value);
}
}
//遍历HashMap集合,得到键和值,按照要求进行拼接
StringBuilder sb=new StringBuilder();
Set<Character>keySet=hm.keySet();
for(Character key:keySet){
Integer value=hm.get(key);
sb.append(key).append("(").append(value).append(")");
}
String result= sb.toString();
//输出结果
System.out.println(result);
}
}
-
如果想要有序输出字符串及其输出个数,可使用TreeMap