Java 利用Map集合計算一個字符串中每一個字符出現的次數

步驟分析

一、給出一串字符串,字符串中能夠包含字母、數字、符號等等。html

二、建立一個Map集合,key是字符串中的字符,value是字符的個數。java

三、遍歷字符串,獲取每個字符。數組

五、使用獲取到的字符,去集合Map判斷key(字符)是否存在。測試

六、假如key(字符)存在,那麼該key對應的value數值增長1,即該字符的數量加一。spa

七、假如key(字符)不存在,value的值設爲1,並將key-value添加到Map集合中。code

八、遍歷Map集合,輸出每一個字符個數的結果。htm

 

代碼實現

建立一個CharNumber類,在類中定義keyValue方法,計算字符串中每一個字符的個數

public class CharNumber { /** * 計算字符串中每一個字符的個數 * @param string 要被計算字符個數的字符串 * @return <字符-個數> 的Map集合 */
    public static HashMap<Character, Integer> keyValue(String string) { // 字符串轉換爲字符數組
        char[] chars = string.toCharArray(); // 建立一個Map集合用來存放記錄
        HashMap<Character, Integer> 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<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 { public static HashMap<Character, Integer> keyValue(String string) { char[] chars = string.toCharArray(); HashMap<Character, Integer> 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<Character, Integer> hashMap) { Set<Map.Entry<Character, Integer>> set = hashMap.entrySet(); Iterator<Map.Entry<Character, Integer>> kvIterator = set.iterator(); while (kvIterator.hasNext()) { Map.Entry<Character, Integer> 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.htmlblog

相關文章
相關標籤/搜索