Java中不使用HashMap怎么实现统计字符串中每个字符出现的次数?
目前列出四种方式,希望对你有帮助。
数组的索引法使用流(使用TreeMap)巧用split巧用Pattern一、实现代码import java.util.*;import java.util.function.Function;import java.util.regex.Matcher;import java.util.regex.Pattern;import java.util.stream.Collectors;/** * @author 米兜 * @description * @date 2020/6/26 22:23 * @modified by */public class Sum {public static void main(String[] args) {String str = "guanzhuchengxuyuanmidou";System.out.println("-----------1.数组的索引法【start】-----------");count1(str);System.out.println("-----------1.数组的索引法【end】-----------");System.out.println("---------------------------------------------");System.out.println("-----------2.使用流(使用TreeMap)【start】-----------");count2(str);System.out.println("-----------2.使用流(使用TreeMap)【end】-----------");System.out.println("---------------------------------------------");System.out.println("-----------3.巧用split【start】-----------");count3(str);System.out.println("-----------3.巧用split【end】-----------");System.out.println("---------------------------------------------");System.out.println("-----------4.巧用Pattern【start】-----------");count4(str);System.out.println("-----------4.巧用Pattern【end】-----------");}/** * @author 米兜 * @param * @description 1.数组的索引法 * @date 2020/6/26 22:51 */ public static void count1(String str) {//创建26个空间大小的数组,存放26个字母 int[] nums = new int[26];for (char i : str.toCharArray()) {//自动将char i转化成ascall码 if (i >= 97 && i <= 122) {//利用数组的索引进行存储 nums[i - 97]++;}}for (int i = 0; i < nums.length; i++) {if (nums[i] != 0) {//i加上97并且再转化为char类型就可以显示相应的字符 char j = (char) (i + 97);System.out.println("字符:" + j + "====" + "个数" + nums[i]);}}}/** * @author 米兜 * @param * @description 2.使用流(使用TreeMap/这里也是用map) * @date 2020/6/26 22:51 */ public static void count2(String str) {TreeMap
-----------1.数组的索引法【start】-----------
字符:a====个数2
字符:c====个数1
字符:d====个数1
字符:e====个数1
字符:g====个数2
字符:h====个数2
字符:i====个数1
字符:m====个数1
字符:n====个数3
字符:o====个数1
字符:u====个数5
字符:x====个数1
字符:y====个数1
字符:z====个数1
-----------1.数组的索引法【end】-----------
---------------------------------------------
-----------2.使用流(使用TreeMap)【start】-----------
字符:a====个数2
字符:c====个数1
字符:d====个数1
字符:e====个数1
字符:g====个数2
字符:h====个数2
字符:i====个数1
字符:m====个数1
字符:n====个数3
字符:o====个数1
字符:u====个数5
字符:x====个数1
字符:y====个数1
字符:z====个数1
-----------2.使用流(使用TreeMap)【end】-----------
---------------------------------------------
-----------3.巧用split【start】-----------
字符:g====个数2
字符:u====个数5
字符:a====个数2
字符:n====个数3
字符:z====个数1
字符:h====个数2
字符:c====个数1
字符:e====个数1
字符:x====个数1
字符:y====个数1
字符:m====个数1
字符:i====个数1
字符:d====个数1
字符:o====个数1
-----------3.巧用split【end】-----------
---------------------------------------------
-----------4.巧用Pattern【start】-----------
字符:g====个数2
字符:u====个数5
字符:a====个数2
字符:n====个数3
字符:z====个数1
字符:h====个数2
字符:c====个数1
字符:e====个数1
字符:x====个数1
字符:y====个数1
Disconnected from the target VM, address: '127.0.0.1:53939', transport: 'socket'
字符:m====个数1
字符:i====个数1
字符:d====个数1
字符:o====个数1
-----------4.巧用Pattern【end】-----------
Process finished with exit code 0
三、总结冰冻三尺非一日之寒,滴水石穿非一日之功。