步骤分析

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方法,计算字符串中每个字符的个数

  1. public class CharNumber {
  2. /**
  3. * 计算字符串中每个字符的个数
  4. * @param string 要被计算字符个数的字符串
  5. * @return <字符-个数> 的Map集合
  6. */
  7. public static HashMap<Character, Integer> keyValue(String string) {
  8. // 字符串转换为字符数组
  9. char[] chars = string.toCharArray();
  10.  
  11. // 创建一个Map集合用来存放记录
  12. HashMap<Character, Integer> hashMap = new HashMap<>();
  13.  
  14. // 遍历字符串,获取每一个字符
  15. for (char c : chars) {
  16. // 使用获取到的字符,去Map集合判断key是否存在
  17. // 利用Map集合的containsKey()方法,判断key是否存在
  18. // 如果存在 value ++,如果不存在 value = value
  19. if (hashMap.containsKey(c)) {
  20. // key存在,获取key对应的value,数值增加一,然后再更新到集合中
  21. Integer value = hashMap.get(c);
  22. value ++;
  23. hashMap.put(c, value);
  24. } else {
  25. // key不存在,将key添加到Map集合中,且其对应的value为1
  26. hashMap.put(c, 1);
  27. }
  28. }
  29. return hashMap;
  30. }
  31. }

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

  1. public class CharNumber {
  2. /**
  3. * 遍历输出Map集合
  4. * @param hashMap <字符-个数> 的Map集合
  5. */
  6. public static void iteratorMap(HashMap<Character, Integer> hashMap) {
  7. // 调用Map集合的entrySet()方法,获取集合Map的Key-Value,赋值给Set集合
  8. Set<Map.Entry<Character, Integer>> set = hashMap.entrySet();
  9. // 创建Set集合的迭代器
  10. Iterator<Map.Entry<Character, Integer>> kvIterator = set.iterator();
  11. // 迭代输出Set集合
  12. // hasNext():是否存在下一个元素
  13. // next():获取下一个元素
  14. while (kvIterator.hasNext()) {
  15. Map.Entry<Character, Integer> kv = kvIterator.next();
  16. System.out.println("字符'" + kv.getKey() + "'的个数是:" + kv.getValue());
  17. }
  18. }
  19. }

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

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

代码总和

CharNumber类

  1. import java.util.HashMap;
  2. import java.util.Iterator;
  3. import java.util.Map;
  4. import java.util.Set;
  5.  
  6. public class CharNumber {
  7.  
  8. public static HashMap<Character, Integer> keyValue(String string) {
  9. char[] chars = string.toCharArray();
  10. HashMap<Character, Integer> hashMap = new HashMap<>();
  11. for (char c : chars) {
  12. if (hashMap.containsKey(c)) {
  13. Integer value = hashMap.get(c);
  14. value ++;
  15. hashMap.put(c, value);
  16. } else {
  17. hashMap.put(c, 1);
  18. }
  19. }
  20. return hashMap;
  21. }
  22.  
  23. public static void iteratorMap(HashMap<Character, Integer> hashMap) {
  24. Set<Map.Entry<Character, Integer>> set = hashMap.entrySet();
  25. Iterator<Map.Entry<Character, Integer>> kvIterator = set.iterator();
  26. while (kvIterator.hasNext()) {
  27. Map.Entry<Character, Integer> kv = kvIterator.next();
  28. System.out.println("字符'" + kv.getKey() + "'的个数是:" + kv.getValue());
  29. }
  30. }
  31. }

DemoCharNumber类

  1. // 测试
  2.  
  3. import java.util.Scanner;
  4.  
  5. public class DemoCharNumber {
  6. public static void main(String[] args) {
  7. Scanner scn = new Scanner(System.in);
  8. System.out.print("请输入一个字符串:");
  9. String string = scn.next();
  10. CharNumber.iteratorMap(CharNumber.keyValue(string));
  11. }
  12. }

Java 利用Map集合计算一个字符串中每个字符出现的次数的更多相关文章

  1. 利用HashMap计算一个字符串中每个字符出现的次数

    问题描述:计算一个字符串中每个字符出现的次数 问题分析:每个字符串对应着它的次数,且字符串唯一不重复,这让我们想到了HashMap中的键值对. 1.使用Scanner获取字符串 2.遍历字符串,获取每 ...

  2. JAVA经典题--计算一个字符串中每个字符出现的次数

    需求:  计算一个字符串中每个字符出现的次数 思路: 通过toCharArray()拿到一个字符数组--> 遍历数组,将数组元素作为key,数值1作为value存入map容器--> 如果k ...

  3. 用es6的Array.reduce()方法计算一个字符串中每个字符出现的次数

    有一道经典的字符串处理的问题,统计一个字符串中每个字符出现的次数. 用es6的Array.reduce()函数配合“...”扩展符号可以更方便的处理该问题. s='abananbaacnncn' [. ...

  4. Java基础知识强化之集合框架笔记61:Map集合之统计字符串中每个字符出现的次数的案例

    1. 首先我们看看统计字符串中每个字符出现的次数的案例图解: 2. 代码实现: (1)需求 :"aababcabcdabcde",获取字符串中每一个字母出现的次数要求结果:a(5) ...

  5. 阶段1 语言基础+高级_1-3-Java语言高级_04-集合_08 Map集合_10_练习_计算一个字符串中每个字符出现的次数

  6. Hashtable集合 --练习题_计算一个字符串中每个字符出现次数

    Hashtable集合 java.util.Hashtable<K,V>集合 implements Map<K,V>接口  Hashtable:底层也是一个哈希表,是一个线程安 ...

  7. Java统计一个字符串中各个字符出现的次数

    相信很多人在工作的时候都会遇到这样一个,如何统计一个字符串中各个字符出现的次数呢,这种需求一把用在数据分析方面,比如根据特定的条件去查找某个字符出现的次数.那么如何实现呢,其实也很简单,下面我贴上代码 ...

  8. 计算一个字符串的每个字符出现的次数案例——Map集合

    其中,字符的包装类是Character;字符串包装类是String: 遍历字符串转换的数组,每个元素都是一个字符,看创建的这个集合有木有,一开始肯定是没有的其实,字符作为key,所以判断的是这个创建的 ...

  9. Java 13天基础 06天map集合小练习(黑马程序员) 统计字符串中每个字符出现的次数 (经典面试题)

    import java.util.HashMap; import java.util.Map; import java.util.Scanner; /** * 目标 : 输出一个字符串中每个字符出现的 ...

随机推荐

  1. servicemix-3.2.1 内置的服务引擎和绑定组件

    服务引擎: servicemix-bean servicemix-camel servicemix-cxf-se servicemix-drools servicemix-eip servicemix ...

  2. 2019-4-12-WPF-绑定的默认模式

    title author date CreateTime categories WPF 绑定的默认模式 lindexi 2019-04-12 09:38:58 +0800 2019-04-12 09: ...

  3. Jasypt加密SpringBoot配置文件

    如果 SpringBoot 的 properties 文件中含有用户名密码等敏感信息,为了安全起见需要对明文密码加密.Jasypt 是用来加密的 jar 包. 1.引入 Jasypt 在 pom.xm ...

  4. 移动端android上line-height不居中的问题的解决

    废话不多话,直接上代码,如下: .btn { width: 1.5rem; max-width: 100px; text-align: center; height: .56rem; font-wei ...

  5. IDEA 创建普通的maven+java项目(入门)

    配置IDEA2017,maven3.5.2 ,Java1.8 其实大部分的IDEA都差不多,不用纠结版本之前的差异. 第一步:File-->New-->Project 第二步:出现new ...

  6. Weblogic/WAS之Full GC监控与计算

    在网上看到关于内存回收机制,同大家一起分析探讨.堆内存划分为Eden.Survivor 和 Tenured/Old 空间,如下图所示: Minor GC 会清理年轻代的内存,Major GC 是清理老 ...

  7. logisim自动生成电路

    之前再做有关logisim有关的实验时,一直在傻乎乎地连线,而我是看了mooc有关的视频时,才知道logisim有自动连线的功能. 自动连线需要事先知道输入与输出的真值表或者全部的表达式,将其填入lo ...

  8. Linux网络IO模型

    同步和异步,阻塞和非阻塞 同步和异步 关注的是结果消息的通信机制 同步:同步的意思就是调用方需要主动等待结果的返回 异步:异步的意思就是不需要主动等待结果的返回,而是通过其他手段比如,状态通知,回调函 ...

  9. java日志学习(持续更新)

    1.Java实现日志 java日志体系大体可以分为三个部分:日志门面接口.桥接器.日志框架具体实现.原生日志实现(http://www.importnew.com/16331.html) Java日志 ...

  10. schema list validator --python cerberus

    工作中需要对如下json结构进行验证: "ActiveStatus" : [ { "effectiveDates" : { "effectiveFro ...