Java集合框架篇-71-统计字符串中每个字符出现的次数
程序员文章站
2022-04-18 09:31:46
...
接着继续学习Map集合的知识,这篇,看到这个题目就知道,这个题目在面试中被问到过N次了。其中解决方法有很多种,什么数组,双列列表(HashMap)都可以实现。本篇就是来介绍下双列列表的实现过程。
1.分析
需要对一个字符串中字符出现次数进行统计,一般都需要把字符串转换成字符数组,然后,这里使用HashMap去实现,效率是最高的。解题的思路和步骤如下。
1)定义一个字符串
2)将字符串转换为字符数组
3)定义双列集合,存储字符串中字符和字符出现次数
4)遍历数组拿到每一个字符,并存储在集合中
5)存储过程需要做判断,如果集合中不包含这个键,键的值就为1,如果包含,键的值就在原来基础上加1
6)遍历打印集合
2.代码实现
根据上面的分析步骤去写代码实现
package map;
import java.util.HashMap;
public class Demo5_HashMap {
public static void main(String[] args) {
//1.定义一个需要被统计的字符串
String a = "aacaabbbhfhheeecddwdddffdf";
//2.把字符串转换成字符数组
char[] arr = a.toCharArray();
//3.定义HashMap
HashMap<Character, Integer> hm = new HashMap<>();
//4.遍历每字符数组,拿到每一个字符
for (char c : arr) {
//5.判断是否包含,然后存储
/*if( !hm.containsKey(c)) { //如果不包含
hm.put(c, 1);
}else {
hm.put(c, hm.get(c) + 1);
}*/
//上面判断可以简写三元运算符
hm.put(c, !hm.containsKey(c) ? 1 : hm.get(c) + 1);
}
//6.打印集合
for (Character key : hm.keySet()) {
System.out.println(key + "=" + hm.get(key));
}
}
}
运行结果:
a=4
b=3
c=2
d=6
e=3
f=4
w=1
h=3
这个问题还有其他解题方式,请看:https://blog.csdn.net/u011541946/article/details/78304192下一篇: 详解如何备份及恢复 Linux 文件权限
推荐阅读