Java集合框架篇-71-统计字符串中每个字符出现的次数

       接着继续学习Map集合的知识,这篇,看到这个题目就知道,这个题目在面试中被问到过N次了。其中解决方法有很多种,什么数组,双列列表(HashMap)都可以实现。本篇就是来介绍下双列列表的实现过程。

1.分析

      需要对一个字符串中字符出现次数进行统计,一般都需要把字符串转换成字符数组,然后,这里使用HashMap去实现,效率是最高的。解题的思路和步骤如下。

1)定义一个字符串

2)将字符串转换为字符数组

3)定义双列集合,存储字符串中字符和字符出现次数

4)遍历数组拿到每一个字符,并存储在集合中

5)存储过程需要做判断,如果集合中不包含这个键,键的值就为1,如果包含,键的值就在原来基础上加1

6)遍历打印集合

2.代码实现

根据上面的分析步骤去写代码实现

扫描二维码关注公众号,回复: 1888879 查看本文章
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

猜你喜欢

转载自blog.csdn.net/u011541946/article/details/80574380