`
kennethf6986
  • 浏览: 67196 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

统计字符串中各个字符出现的个数,并对其排序

 
阅读更多
public class WordCount {  
  
    public static void main(String[] args) {  
        String words = "ilikecubailikejavaibmoraclesun";  
          
        StringCounter strCounter = new StringCounter();  
        String strTem;  
        for(int i = 0; i < words.length(); i++) {  
            strTem = String.valueOf(words.charAt(i));  
            strCounter.count(strTem);  
        }  
  
        //getSortedHashtableByValue(strCounter);  
        for(Map.Entry<String, Integer> entry : getSorted(strCounter)) {  
            System.out.println(entry.getKey() + "------------" + entry.getValue());  
        }  
    }  
      
    //嵌套类  
    static class StringCounter extends HashMap<String,Integer> {  
        public void count(String str) {  
            Integer num = get(str);  
            put(str,num == null ? 1 : num + 1);  
            //上面的代码是不是很简洁?  
              
            /*if(num == null)  
                put(str,1); 
            else  
                put(str,num+1);*/  
        }  
    }  
      
    //返回排序好的数组  
    static Map.Entry<String, Integer>[] getSorted(Map<String,Integer> m) {  
        Set set = m.entrySet();  
        Map.Entry<String, Integer>[] entries =   
            (Map.Entry<String, Integer>[]) set.toArray(new Map.Entry[set.size()]);  
        //Comparator 策略模式应用的一个实例  
        Arrays.sort(entries, new Comparator<Map.Entry<String, Integer>>() {  
            @Override  
            public int compare(Entry<String, Integer> entry1,   
                    Entry<String, Integer> entry2) {  
                Integer in1 = entry1.getValue();  
                Integer in2 = entry2.getValue();  
                return in1.compareTo(in2);  
            }  
        } );  
        return  entries;  
    }  
}  


   1.在这个小程序中,有嵌套类(nested clsss)的使用,具体为StringCounter类。在此程序中,StringCounter为内部类,把它生命为static,原因有2个,a.它并不需要与其外围类通信,并不需要去访问外围类的成员。b.创建嵌套类的对象比较方便,并不需要其外围类的对象。
   2.在统计时,想到了用hashmap。 map的巧用。
   3.对map中的数据进行排序。这里用到了Comparator。 这是策略模式(strategy)的一个具体应用。
分享到:
评论

相关推荐

    php中3种方法统计字符串中每种字符的个数并排序

    3种方法,统计字符串中每种字符的个数并排序,多种解法哟~ str_split()函数很重要

    汇编实验报告.doc

    分类统计字符的个数 程序接收用户键入的一行字符(用回车符结束),并按字母,数字及其他字符分 类计数,然后将结果存入以letter,digit和other为名的存储单元中。 4. 查找电话号码 要求程序建立一个可存50项的电话...

    上海电机学院C语言实训答案

    (9)编写一个函数void fun(char a[],int k,int n),其功能是:删除字符串中指定下标开始的n 个字符。其中,a中放字符串,k中存放指定的下标。 例如,字符串内容为:Hellollo World!,k中值为:5,n中的值为:3,则...

    华软C语言答案-实验8-数组 (2).doc

    1、(基础题)输入一个字符串,请编程统计其中的字母、数字、空格(含制表符)、标点符号的个数并输出。如下图所示: 2、参考课件ppt,完成如下程序:由用户输入10个字符串,每个字符串长度不超过20个字符,要求找出其中...

    关于蓝桥杯C++案例题和模拟题的示例

    题目描述:给定一个字符串,统计其中各个字母出现的次数并按字母顺序输出。 动态规划: 题目描述:有一个数组,求其中最长递增子序列的长度。 图论算法: 题目描述:给定一个有向图,判断是否存在环路。 搜索算法...

    PTA-浙大版《Python 程序设计》题目集-第3章-16 删除重复字符 (20分)

    本题要求编写程序,将给定字符串去掉重复的字符后,按照字符ASCII码顺序从小到大排序后输出。 输入格式: 输入是一个以回车结束的非空字符串(少于80个字符)。 输出格式: 输出去重排序后的结果字符串。 输入样例:...

    浙江大学C语言上机练习题附答案

    70052 统计字符出现次数 23 夏3周 24 10008 求1~100中能被6整除的所有整数的和 24 20014 计算三门课程的平均成绩 25 20016 计算x的平方 25 20021 计算分段函数的值 25 20022 计算摄氏温度 26 70051 找最大值并交换 ...

    c程序设计习题参考(谭浩强三版)习题参考解答

    8.8编写一函数,有实参传来一个字符串,统计此字符串中字母,数字,空格和其它字符的个数,在主函数中输入字符串以及输出上述的结果。 52 8.10写一函数,用“起泡法”对输入的10个字符按由小到大的顺序排列。 54 ...

    LeetCode判断字符串是否循环-ACMTraining:同步需求

    LeetCode判断字符串是否循环 Problem41 of LeetCode 题目: 给定一个未排序的整数数组,找出其中没有出现的最小的正整数。 这道题体现了对数组信息维度的利用。利用好了可以在时间和空间复杂度上都有很大帮助 可以...

    蓝桥杯历年的经典案例和题目

    给定一个字符串,统计其中字母 'A' 的个数。 示例输入: ABCDAAEFA 示例输出: 3 解析: 对于输入的示例字符串 "ABCDAAEFA",其中包含3个字母'A',因此输出为3。 3.以下是一个关于排序算法的经典案例,供您参考: ...

    JAVA编程题全集(100题及答案)

    JAVA常见编程题全集(100题及答案) 部分题目: 编写一个Java程序,用if-else语句判断某年份是否为闰年。 打印出所有的 "水仙花数 将一个正整数分解质因数 输入一行字符,分别统计出其中...计算字符串中子串出现的次数

    汇编语言程序测试参考题型+部分参考

    5、 判断数据块中是否包含某个数据(或字符串中是否含有某个字符)。 6、 判断某个数据块中正数(或负数、或0)的个数。 7、 判断某字节中包含的1的个数(或字中、包含的0的个数)。 8、 十进制与十六进制的相互转换...

    单词统计处理

    对读入的某个文本文件input.txt中,拆出英文单词,输出一个按字典顺序排列的单词表,结果输出在文本文件output.txt中,每个单词一行,并在单词后输出该单词出现的个数,两个字段之间用逗号分隔。约定单词仅由英文...

    delphi 开发经验技巧宝典源码

    0171 判断字符在字符串中出现的个数 111 0172 在语句中查找汉字的个数 112 0173 如何统计中英文个数 112 5.5 字符串的其他操作 113 0174 返回指定字符串的起始位置 113 0175 获得汉字的拼音简码 113 ...

    delphi 开发经验技巧宝典源码06

    0171 判断字符在字符串中出现的个数 111 0172 在语句中查找汉字的个数 112 0173 如何统计中英文个数 112 5.5 字符串的其他操作 113 0174 返回指定字符串的起始位置 113 0175 获得汉字的拼音简码 113 ...

    EXCEL函数公式集

    如何把单元格中的数字提取出来(字符串中不连续) 数字在字符串中不连续如何提取数字 用如何提取“-”前后的字符 怎样删去﹕后的文字 怎样只取“.”之后的文字﹖ 获取单元格内容中字符串 如何提取一串数字中的几位...

Global site tag (gtag.js) - Google Analytics