龙空技术网

Java中不使用HashMap怎么实现统计字符串中每个字符出现的次数?

米兜同学 170

前言:

此时你们对“c语言将字母转换为ascall码”大致比较珍视,你们都想要学习一些“c语言将字母转换为ascall码”的相关资讯。那么小编在网上收集了一些关于“c语言将字母转换为ascall码””的相关文章,希望姐妹们能喜欢,大家快快来了解一下吧!

一、方式

如下四种方式,可以解决如上问题,希望对你有用。

数组的索引法使用流(使用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 Java中不使用HashMap怎么实现统计字符串中每个字符出现的次数? * @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<String, Long> result = Arrays.stream(str.split(""))                .sorted()//                              .collect(Collectors.groupingBy(Function.identity(),Collectors.counting()));                .collect(Collectors.groupingBy(Function.identity(),TreeMap::new,Collectors.counting()));        Iterator iter = result.entrySet().iterator();        while(iter.hasNext()) {            Map.Entry entry = (Map.Entry)iter.next();            System.out.println("字符:" + (String)entry.getKey() + "====" + "个数" +(Long)entry.getValue());        }    }    /**     * @author 米兜     * @param     * @description 3.巧用split     * @date 2020/6/26 22:51     */    public static void count3(String str) {        ArrayList<String> arrayList = new ArrayList <>();        for (char c : str.toCharArray()) {            int count=str.split(String.valueOf(c)).length - 1;            //最后一个字符串split要+1            if (str.substring(str.length()-1,str.length()).equals(String.valueOf(c))){                count++;            }            if (arrayList.contains(String.valueOf(c))){                continue;            }            System.out.println("字符:" + String.valueOf(c) + "====" + "个数" +count);            arrayList.add(String.valueOf(c));        }    }    /**     * @author 米兜     * @param     * @description 4.巧用Matcher     * @date 2020/6/26 22:51     */    //如果要不区分大小写,则compile(minstr,CASE_INSENSITIVE)    public static void count4(String str) {        ArrayList<String> arrayList = new ArrayList<>();        for (char c : str.toCharArray()) {            int count = 0;            Matcher m = Pattern.compile(String.valueOf(c)).matcher(str);            if (arrayList.contains(String.valueOf(c))) {                continue;            }            while (m.find()) {                count++;            }            System.out.println("字符:" + String.valueOf(c) + "====" + "个数" + count);            arrayList.add(String.valueOf(c));        }    }}

三、实现结果

-----------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字符:m====个数1字符:i====个数1字符:d====个数1字符:o====个数1-----------4.巧用Pattern【end】-----------Process finished with exit code 0

四、总结

冰冻三尺非一日之寒,滴水石穿非一日之功。

标签: #c语言将字母转换为ascall码 #java中输入字符串数组统计字符个数