欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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