文本操作:元音字符统计

泛泛的说,今天的需求就是需要统计特定字符出现的个数,想必各位都会,如果仅仅是实现,传统的实现应该像下面这样
1 Map<String, Integer> counts = new HashMap<String, Integer>();
2 for (String word : words) {
3     Integer count = counts.get(word);
4     if (count == null) {
5         counts.put(word, 1);
6     } else {
7         counts.put(word, count + 1);
8     }
9 }

这么做没问题,简单粗暴快,只不过这次我希望更优雅的实现它。今天特地要用一下Google的Guava工程提供的API,Multiset。看上去他是一个集合,他也的确是,我们可以简单的理解为他是一个元素顺序无关,元素可重的集合,这里不细讲,以使用为主。后续有机会展开一下Guava的内容。
 1 package demo_2015_11_17;
 2 
 3 import java.util.Scanner;
 4 
 5 import com.google.common.collect.HashMultiset;
 6 import com.google.common.collect.Multiset;
 7 
 8 public class DEMO 
 9 {
10     public static void main( String[] args )
11     {
12         
13         Scanner s = null;
14         try {
15             //设定数据源
16             s = new Scanner(System.in);
17             String srcStr = s.nextLine();
18             String vowels = "aeiou";
19             
20             Multiset<String> ms = HashMultiset.create();
21             
22             char[] srcChars = srcStr.toCharArray();
23             String curChar = null;
24             
25             //遍历数据源
26             for (int i = srcChars.length - 1; i >= 0; i--) {
27                 curChar = String.valueOf(srcChars[i]);
28                 if(vowels.indexOf(curChar) != -1){
29                     ms.add(curChar);
30                 }
31             }
32             
33             for (String stemp : ms.elementSet()) {
34                 System.out.println("元音字母[" + stemp + "]的出现次数为:" + ms.count(stemp));
35             }
36             
37         } finally {
38             s.close();
39         }
40     }
41 }

结果演示如下:
one twe three four five
元音字母[e]的出现次数为:5
元音字母[u]的出现次数为:1
元音字母[i]的出现次数为:1
元音字母[o]的出现次数为:2

因为使用了Guava工程,使用maven管理依赖,所以把Guava的版本贴一下
<dependency>
    <groupId>com.google.guava</groupId>
    <artifactId>guava</artifactId>
    <version>19.0-rc2</version>
</dependency>

posted on 2015-11-17 16:11 都较瘦 阅读(89) 评论(0)  编辑  收藏 所属分类: Java相关案例积累


只有注册用户登录后才能发表评论。


网站导航:
 
<2015年11月>
25262728293031
1234567
891011121314
15161718192021
22232425262728
293012345

导航

统计

公告

博客定位:囿于目前的水平,博客定位在记录自己的学习心得和随手的练习

常用链接

留言簿

随笔分类

随笔档案

文章分类

文章档案

搜索

最新评论

阅读排行榜

评论排行榜