咨询热线

您当前的位置:主页 > IT编程 >
IT编程 新闻 娱乐八卦 数码科技 游戏 汽车 体育 视频

Java 利用Map集合计算一个字符串中每个字符出现的次数

浏览次数:    时间:2020-03-25
分享到:

Java 利用Map集合计算一个字符串中每个字符出现的次数

步骤分析

1、给出一串字符串,字符串中可以包含字母、数字、符号等等。2、创建一个Map集合,key是字符串中的字符,value是字符的个数。3、遍历字符串,获取每一个字符。5、使用获取到的字符,去集合Map判断key(字符)是否存在。6、假如key(字符)存在,那么该key对应的value数值增加1,即该字符的数量加一。7、假如key(字符)不存在,value的值设为1,并将key-value添加到Map集合中。8、遍历Map集合,输出每个字符个数的结果。?

代码实现

创建一个CharNumber类,在类中定义keyValue方法,计算字符串中每个字符的个数

public class CharNumber { /** * 计算字符串中每个字符的个数 * @param string 要被计算字符个数的字符串 * @return <字符-个数> 的Map集合 */ public static HashMap keyValue(String string) { // 字符串转换为字符数组 char[] chars = string.toCharArray(); // 创建一个Map集合用来存放记录 HashMap hashMap = new HashMap<>(); // 遍历字符串,获取每一个字符 for (char c : chars) { // 使用获取到的字符,去Map集合判断key是否存在 // 利用Map集合的containsKey()方法,判断key是否存在 // 如果存在 value ++,如果不存在 value = value if (hashMap.containsKey(c)) { // key存在,获取key对应的value,数值增加一,然后再更新到集合中 Integer value = hashMap.get(c); value ++; hashMap.put(c, value); } else { // key不存在,将key添加到Map集合中,且其对应的value为1 hashMap.put(c, 1); } } return hashMap; }}?

创建一个CharNumber类,在类中定义iteratorMap方法,遍历输出计算结果

public class CharNumber { /** * 遍历输出Map集合 * @param hashMap <字符-个数> 的Map集合 */ public static void iteratorMap(HashMap hashMap) { // 调用Map集合的entrySet()方法,获取集合Map的Key-Value,赋值给Set集合 Set> set = hashMap.entrySet(); // 创建Set集合的迭代器 Iterator> kvIterator = set.iterator(); // 迭代输出Set集合 // hasNext():是否存在下一个元素 // next():获取下一个元素 while (kvIterator.hasNext()) { Map.Entry kv = kvIterator.next(); System.out.println("字符'" + kv.getKey() + "'的个数是:" + kv.getValue()); } }}?

测试一下CharNumber类,随便输入一串字符串,计算每个字符的个数

public class DemoCharNumber { public static void main(String[] args) { Scanner scn = new Scanner(System.in); System.out.print("请输入一个字符串:"); String string = scn.next(); CharNumber.iteratorMap(CharNumber.keyValue(string)); }}运行代码(注意,不能输入空格):
请输入一个字符串:dafsdaganjsda
!!!!!!字符'a'的个数是:4字符'!'的个数是:6字符's'的个数是:2字符'd'的个数是:3字符'f'的个数是:1字符'g'的个数是:1字符'j'的个数是:1字符'n'的个数是:1?

代码总和

CharNumber类

import java.util.HashMap;import java.util.Iterator;import java.util.Map;import java.util.Set;public class CharNumber { public static HashMap keyValue(String string) { char[] chars = string.toCharArray(); HashMap hashMap = new HashMap<>(); for (char c : chars) { if (hashMap.containsKey(c)) { Integer value = hashMap.get(c); value ++; hashMap.put(c, value); } else { hashMap.put(c, 1); } } return hashMap; } public static void iteratorMap(HashMap hashMap) { Set> set = hashMap.entrySet(); Iterator> kvIterator = set.iterator(); while (kvIterator.hasNext()) { Map.Entry kv = kvIterator.next(); System.out.println("字符'" + kv.getKey() + "'的个数是:" + kv.getValue()); } }}?

DemoCharNumber类

// 测试import java.util.Scanner;public class DemoCharNumber { public static void main(String[] args) { Scanner scn = new Scanner(System.in); System.out.print("请输入一个字符串:"); String string = scn.next(); CharNumber.iteratorMap(CharNumber.keyValue(string)); }} 该文章转载自:https://www.cnblogs.com/liyihua/p/12203096.html

Copyright © 唐斌翔的博客 版权所有