写点什么

java 零基础入门 - 如何统计字符串中每个字符的出现次数?

作者:喵手
  • 2022 年 7 月 27 日
  • 本文字数:2340 字

    阅读完需:约 8 分钟

java零基础入门-如何统计字符串中每个字符的出现次数?

哈喽,各位小伙伴们好,我是喵手。

       今天我要给大家分享一些自己日常学习到的一些知识点,并以文字的形式跟大家一起交流 学习,互相学习,才能成长的更快,对吧。

       我是一名 java 开发,所以日常接触到最多的就是 java 啦,所以我趁自己有空,就来好好回忆,把自己学到的会的,进行输出,不图什么有回报,只想能帮助到更多的小伙伴,就好。

       小伙伴们在批阅的过程中,如果觉得文章不错,欢迎点赞、收藏、关注哦。三连即是对喵手我创作道路上最好的鼓励与支持!

一、前言

       论前几期啊,我们是分别讲了Object类Date类FormDate类Calendar类System类StringBuilder类,不知道大家掌握的如何,如果没有及时巩固的同学,可以看我这里,我给大家罗列了下,快速学习通道,只希望能帮助到大家更好的学习与成长,这就是我写作的初衷。

        今天,我就要给大家讲讲一个双列集合-map。很多期内容,有小伙伴给我留言,说跟着我学,一般要看完文章才知道这一期讲了什么,所以,每一期,我都会先总结教学目标,而这期的教学目标如下:

  • 掌握 map 常用方法,比如 containsKey()方法。

  • 掌握如何通过 map 实战。

  • 掌握字符串字符统计算法。​

二、前言

       对于双列集合之 map 集合,它的相关知识点及拓展咱们都已经差不多学完了。接下来,就是带着大家如何灵活运用 map 进行一个实战教学,概念加实践相结合,才能让你更好的掌握与理解每一个知识点,废话不多说,我这就开始。

三、案例介绍

       实现一个工具类,要求对于任何字符串,都可以计算出该字符串中每个字符的出现次数,比如字符串“abcda”,a=2,b=1,c=1,d=1。要求你用 map 实现。

       这道题相对而言比上一期的斗地主洗牌发牌机制算法简单的多,不知道你们对于今天这道算法题,你们有何思路?如下是我对这道题的个人理解与算法分析及代码实现,仅供参考:

四、思路分析

       要用 map 进行统计,那肯定会用该方法,containsKey(),该方法作用就是判断某 key 是否存在于 map 中,若某 key 存在方法返回 true,不存在则返回 false。即:如下是我对该题的具体算法思路分析,仅供参考

  1. 获取一个字符串对象。

  2. 创建一个 map 集合,键代表字符,值代表该字符出现次数。

  3. 遍历字符串得到每个字符。

  4. 判断 map 中是否存在该键。

  5. 如果返回 false 不存在该键,统计次数赋值为 1;若返回 true,获取该键的值进行+1,然后再次存储。

  6. 控制台打印统计 map。

五、实例代码演示

       我们先来封装一个工具类,专门用于统计字符串字符字符。由此我命名为 countStr();

countStr()方法具体实现代码如下:仅供参考

/**     * 统计一个字符串中每个字符出现次数     *     * @param str 字符串     */    public static Map<Character, Integer> countStr(String str) {
//定义一个map存放字符及字符次数。 Map<Character, Integer> map = new HashMap<>(); //验空 if (str.length() == 0) { return map; }
//遍历字符串 for (int i = 0; i < str.length(); i++) {
//按顺序获取每一个字符。 char c = str.charAt(i);
if (!map.containsKey(c)) { //说明该字符第一次出现,则直接赋值1. map.put(c, 1); //跳过当前循环。 continue; } //非第一次出现,则进行次数+1; //先获取该字符当前的出现次数,再+1 Integer count = map.get(c) + 1; //次数更新 map.put(c, count); }
return map; }
复制代码

       代码逻辑基本就是按我实现思路分析的那样所写,你们要是不理解,可以评论区私我,我一定会把你教会为止,唯独上方需要注意的就是灵活使用 map 的伴生方法 containsKey(),主要就是该方法的功劳,如果没有该方法,你们会有啥别的解决方式么?

       接下来就是写个 main 函数测试一下吧。

       main 函数具体代码实现如下:

    public static void main(String[] args) {
//手录一个字符串 System.out.println("请输入一个字符串:");
String str = new Scanner(System.in).nextLine(); //统计该str字符串字符出现次数。 Map<Character, Integer> map = countStr(str); //打印统计结果 System.out.println(map); }
复制代码

测试结果如下:测试用例 1 控制台打印:

请输入一个字符串:

abcdea

{a=2, b=1, c=1, d=1, e=1}

测试用例 2 控制台打印:

请输入一个字符串:

{}

解释:该测试用例,我是没有任何输入。

测试用例 3 控制台打印:

请输入一个字符串:

iloveyousmydearfriends

{a=1, d=2, e=3, f=1, i=2, l=1, m=1, n=1, o=2, r=2, s=2, u=1, v=1, y=2}

​​... ...

       好啦,以上就是本期内容的全部教学内容啦,如果对文中的任何知识点有疑问,欢迎评论区评论留言呀,我看见都会一一解答的。

六、文末

       教学是结束了,但是有些话不知我但讲不当讲,啊哈哈, 可我还是想说给你们听听。如下是我很喜欢的一句话,我打算送给你们,希望我们都能变得更好更优秀。

学习不分先后,知识不分多少;事无巨细,当以虚心求教;三人行,必有我师焉!!!

wished for you successed !!!

-------------------------------------------

⭐️若喜欢我,就请关注我叭。

⭐️若对您有用,就请点赞叭。

⭐️若有疑问,就请评论留言告诉我叭。

-------------------------------------------

发布于: 刚刚阅读数: 3
用户头像

喵手

关注

还未添加个人签名 2022.07.05 加入

还未添加个人简介

评论

发布
暂无评论
java零基础入门-如何统计字符串中每个字符的出现次数?_Java_喵手_InfoQ写作社区