分析:
- 获取一个字符串对象
- 创建一个Map集合,键代表字符,值代表次数。
- 遍历字符串得到每个字符。
- 判断Map中是否有该键。
- 如果没有,第一次出现,存储次数为1;如果有,则说明已经出现过,获取到对应的值进行++,再次存储。
- 打印最终结果,回答问题
代码实现:
public class TimesOfStrings {
public static void main(String[] args) {
String str = "asasdsaaassdsds";
//将字符串中每个字符存入char数组
char[] chars = str.toCharArray();
//使用Map集合,键是字符,值是字符出现的次数
Map<Character, Integer> map = new HashMap<>();
for (int i = 0; i < chars.length; i++) {
if (!map.containsKey(chars[i])) {
//字符第一次出现记录一次
map.put(chars[i], 1);
} else {
//字符多次出现,先获取之前的出现的次数(值),再自增一次
int count = map.get(chars[i]);
map.put(chars[i], ++count);
}
}
System.out.println(map);
//使用Entry分别获取键、值,回答问题
Set<Map.Entry<Character, Integer>> entrySet = map.entrySet();
for (Map.Entry<Character, Integer> entry : entrySet
) {
System.out.println("字符" + entry.getKey() + "出现的次数是" + entry.getValue() + "次");
}
}
}
结果如下