23°

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

步骤分析

1、给出一串字符串,字符串中可以包含字母、数字、符号等等。

2、创建一个Map集合,key是字符串中的字符,value是字符的个数。

3、遍历字符串,获取每一个字符。

5、使用获取到的字符,去集合Map判断key(字符)是否存在。

6、假如key(字符)存在,那么该key对应的value数值增加1,即该字符的数量加一。

7、假如key(字符)不存在,value的值不变。

8、遍历Map集合,输出每个字符个数的结果。

 

代码实现

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

public class CharNumber {
    /**
     * 计算字符串中每个字符的个数
     * @param string 要被计算字符个数的字符串
     * @return <字符-个数> 的Map集合
     */
    public static HashMap<Character, Integer> keyValue(String string) {
        // 字符串转换为字符数组
        char[] chars = string.toCharArray();
    </span><span style="color: #008000;">//</span><span style="color: #008000;"> 创建一个Map集合用来存放记录</span>
    HashMap&lt;Character, Integer&gt; hashMap = <span style="color: #0000ff;">new</span> HashMap&lt;&gt;<span style="color: #000000;">();

    </span><span style="color: #008000;">//</span><span style="color: #008000;"> 遍历字符串,获取每一个字符</span>
    <span style="color: #0000ff;">for</span> (<span style="color: #0000ff;">char</span><span style="color: #000000;"> c : chars) {
        </span><span style="color: #008000;">//</span><span style="color: #008000;"> 使用获取到的字符,去Map集合判断key是否存在
        </span><span style="color: #008000;">//</span><span style="color: #008000;"> 利用Map集合的containsKey()方法,判断key是否存在
        </span><span style="color: #008000;">//</span><span style="color: #008000;"> 如果存在 value ++,如果不存在 value = value</span>
        <span style="color: #0000ff;">if</span><span style="color: #000000;"> (hashMap.containsKey(c)) {
            </span><span style="color: #008000;">//</span><span style="color: #008000;"> key存在,获取key对应的value,数值增加一,然后再更新到集合中</span>
            Integer value =<span style="color: #000000;"> hashMap.get(c);
            value </span>++<span style="color: #000000;">;
            hashMap.put(c, value);
        } </span><span style="color: #0000ff;">else</span><span style="color: #000000;"> {
            </span><span style="color: #008000;">//</span><span style="color: #008000;"> key不存在,将key添加到Map集合中,且其对应的value为1</span>
            hashMap.put(c, 1<span style="color: #000000;">);
        }
    }
    </span><span style="color: #0000ff;">return</span><span style="color: #000000;"> hashMap;
}

}

 

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

public class CharNumber {
    /**
     * 遍历输出Map集合
     * @param hashMap <字符-个数> 的Map集合
     */
    public static void iteratorMap(HashMap<Character, Integer> hashMap) {
        // 调用Map集合的entrySet()方法,获取集合Map的Key-Value,赋值给Set集合
        Set<Map.Entry<Character, Integer>> set = hashMap.entrySet();
        // 创建Set集合的迭代器
        Iterator<Map.Entry<Character, Integer>> kvIterator = set.iterator();
        // 迭代输出Set集合
        // hasNext():是否存在下一个元素
        // next():获取下一个元素
        while (kvIterator.hasNext()) {
            Map.Entry<Character, Integer> 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 {

</span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">static</span> HashMap&lt;Character, Integer&gt;<span style="color: #000000;"> keyValue(String string) {
    </span><span style="color: #0000ff;">char</span>[] chars =<span style="color: #000000;"> string.toCharArray();
    HashMap</span>&lt;Character, Integer&gt; hashMap = <span style="color: #0000ff;">new</span> HashMap&lt;&gt;<span style="color: #000000;">();
    </span><span style="color: #0000ff;">for</span> (<span style="color: #0000ff;">char</span><span style="color: #000000;"> c : chars) {
        </span><span style="color: #0000ff;">if</span><span style="color: #000000;"> (hashMap.containsKey(c)) {
            Integer value </span>=<span style="color: #000000;"> hashMap.get(c);
            value </span>++<span style="color: #000000;">;
            hashMap.put(c, value);
        } </span><span style="color: #0000ff;">else</span><span style="color: #000000;"> {
            hashMap.put(c, </span>1<span style="color: #000000;">);
        }
    }
    </span><span style="color: #0000ff;">return</span><span style="color: #000000;"> hashMap;
}

</span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">static</span> <span style="color: #0000ff;">void</span> iteratorMap(HashMap&lt;Character, Integer&gt;<span style="color: #000000;"> hashMap) {
    Set</span>&lt;Map.Entry&lt;Character, Integer&gt;&gt; set =<span style="color: #000000;"> hashMap.entrySet();
    Iterator</span>&lt;Map.Entry&lt;Character, Integer&gt;&gt; kvIterator =<span style="color: #000000;"> set.iterator();
    </span><span style="color: #0000ff;">while</span><span style="color: #000000;"> (kvIterator.hasNext()) {
        Map.Entry</span>&lt;Character, Integer&gt; kv =<span style="color: #000000;"> kvIterator.next();
        System.out.println(</span>"字符'" + kv.getKey() + "'的个数是:" +<span style="color: #000000;"> 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

全部评论: 0

    我有话说: