`
kennethf6986
  • 浏览: 69250 次
  • 性别: 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)的一个具体应用。
分享到:
评论

相关推荐

    统计字符串中每个字母的个数

    以下是一个简单的Java程序示例,用于统计字符串中每个字母的个数: ```java public class Test { public static void main(String[] args) { String input = "Hello, World!"; int[] count = new int[26]; // ...

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

    在PHP编程语言中,统计字符串中每种字符的个数并进行排序是一个常见的需求,尤其在文本处理和数据分析中。本文将详细介绍三种不同的方法来实现这一功能,并强调`str_split()`函数的重要作用。 首先,`str_split()`...

    C语言统计字符在文章中出现的个数的一段程序,在VC++6.0下可以直接运行

    这个函数用于统计字符串中每个字符出现的次数。它接受两个参数,一个是字符指针`q`,另一个是整型数组`a`,用于存储每个字符(按ASCII码值)的计数。首先,初始化数组`a`的所有元素为0,然后遍历字符串`q`,对每个...

    统计字符出现次数。统计字符出现次数

    通过上述内容,我们了解了如何使用Java中的`HashMap`来统计字符串中字符出现的次数。这种方法简单高效,适合处理大量的文本数据。此外,还探讨了一些扩展知识,如其他数据结构的选择、异常处理和多线程环境下的使用...

    java统计文件中每个字符出现的个数

    统计文件中每个字符出现的个数是 Java 编程中的一种常见操作,例如在文本分析、数据挖掘、机器学习等领域中都需要对文件中的字符进行统计。本文将介绍两种方法来统计文件中每个字符出现的个数。 方法一:使用 ...

    java用treemap统计单词出现的个数

    while循环用于删除ArrayList中的空字符串,而for循环用于遍历ArrayList并统计单词出现的次数。 知识点6:Java TreeMap的键值对操作 在本例中,我们使用了TreeMap的put方法来将单词和其出现的次数作为键值对存储在...

    python统计字符的个数代码实例

    1. **字符串的 `count()` 方法**:`str.count(sub, start=0, end=len(string))` 方法用于统计字符串中子字符串 `sub` 出现的次数。`start` 和 `end` 是可选参数,用于指定搜索的起始和结束位置,默认情况下在整个...

    C++字符数组练习题及解答.docx

    具体实现可以使用循环遍历字符串,判断每个字符是否为数字字符,如果是,就将其转换为数字,然后统计奇数和偶数的个数。 第 4 题:字符串删除和排序 本题要求编写程序,输入字符串(不包含空格),删除字符串中 ...

    请编制函数Compute()分别计算出xx中偶数的个数eve

    函数 ReadWrite() 的主要功能是读取文件 in.dat 中的两个字符串,并调用函数 findStr() 统计子字符串的出现次数。最后,输出结果到文件 out.dat 中。 知识点: * 文件输入输出 * 字符串操作 * 函数调用 5. 函数 ...

    汇编实验报告.doc

    实验三:分类统计字符的个数 用户输入一行字符,程序按字母、数字和其他字符分类计数。这需要用到字符分类逻辑和计数器变量。 实验四:查找电话号码 创建一个50项的电话簿,能按人名排序,接收输入人名并查找相应...

    计算机二级C语言改错题归类.pdf

    17. **大小写字母计数**:分别统计字符串中大写字母和小写字母的个数。检查每个字符的ASCII值并分类计数。 18. **字符串转换**:将字符串中的小写字母转换为大写字母。遍历字符串并根据ASCII值转换。 19. **八进制...

    二叉排序树

    可以使用一个哈希表(或数组)来记录每个字母出现的次数,遍历字符串,对每个字符进行计数。对于大写字母,我们将其转换为小写字母进行统一处理,以便区分不同的字符。最后,输出大写字母和小写字母的总数。 例如,...

    C++字符数组练习题及解答[归类].pdf

    问题:编写程序,输入由数字字符构成的字符串,分别统计该字符串中数字字符对应的数字中奇数和偶数的个数。 解答: ```cpp #include #include int main() { int a[100], i, n, o, j; char str[100]; o = 0; j...

    09-罗穗骞-后缀数组——处理字符串的有力工具1

    3. **子串计数**:计算字符串中不同子串的数量,这对于统计信息或分析文本非常有用。 4. **回文子串**:利用后缀数组可以高效地找出字符串中的最长回文子串。 5. **连续重复子串**:寻找连续重复的子串及其出现次数...

    统计一篇文章中每个单词的个数

    本文将深入探讨如何使用编程技术统计一篇文章中每个单词的个数,这通常涉及文本预处理、字符串操作和词频统计等概念。 首先,我们需要一个小程序来读取文章内容。这个"Statistical words.exe"很可能就是这样一个...

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

    1. 统计字符串中字母、数字、空格和标点符号的个数: 这个程序首先定义了一个长度为101的字符数组`str`用于存储用户输入的字符串。然后,通过遍历字符串,利用`isalpha()`、`isdigit()`、`isspace()`和`ispunct()`四...

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

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

    福建农林大学[python实验]

    这篇文章总结了福建农林大学python实验的四个题目,包括输出m,n之间的素数、斐波那契数列、统计字符串中的英文字符、空格、数字和其他字符的个数、字典排序等。 题目一:输出m,n之间的素数 在这个题目中,我们需要...

Global site tag (gtag.js) - Google Analytics