文本操作:元音字符統計

          泛泛的說,今天的需求就是需要統計特定字符出現的個數,想必各位都會,如果僅僅是實現,傳統的實現應該像下面這樣
          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 都較瘦 閱讀(108) 評論(0)  編輯  收藏 所屬分類: Java相關案例積累

          <2015年11月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345

          導航

          統計

          公告

          博客定位:囿于目前的水平,博客定位在記錄自己的學習心得和隨手的練習

          常用鏈接

          留言簿

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 芷江| 凤庆县| 朝阳县| 鹿泉市| 苍溪县| 日照市| 靖边县| 阿拉善盟| 泸定县| 闽侯县| 黄冈市| 马龙县| 黄平县| 普兰县| 西乌| 邢台市| 晋州市| 青河县| 习水县| 枣阳市| 凤凰县| 淳安县| 通道| 永福县| 麻栗坡县| 洛阳市| 肃北| 永顺县| 班戈县| 乾安县| 西充县| 吴桥县| 诸城市| 旬阳县| 涞水县| 海盐县| 南靖县| 舞阳县| 中方县| 陇川县| 色达县|