文本操作:元音字符統(tǒng)計(jì)

          泛泛的說,今天的需求就是需要統(tǒng)計(jì)特定字符出現(xiàn)的個數(shù),想必各位都會,如果僅僅是實(shí)現(xiàn),傳統(tǒng)的實(shí)現(xiàn)應(yīng)該像下面這樣
          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 }

          這么做沒問題,簡單粗暴快,只不過這次我希望更優(yōu)雅的實(shí)現(xiàn)它。今天特地要用一下Google的Guava工程提供的API,Multiset。看上去他是一個集合,他也的確是,我們可以簡單的理解為他是一個元素順序無關(guān),元素可重的集合,這里不細(xì)講,以使用為主。后續(xù)有機(jī)會展開一下Guava的內(nèi)容。
           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             //設(shè)定數(shù)據(jù)源
          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             //遍歷數(shù)據(jù)源
          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 + "]的出現(xiàn)次數(shù)為:" + ms.count(stemp));
          35             }
          36             
          37         } finally {
          38             s.close();
          39         }
          40     }
          41 }

          結(jié)果演示如下:
          one twe three four five
          元音字母[e]的出現(xiàn)次數(shù)為:5
          元音字母[u]的出現(xiàn)次數(shù)為:1
          元音字母[i]的出現(xiàn)次數(shù)為:1
          元音字母[o]的出現(xiàn)次數(shù)為:2

          因?yàn)槭褂昧薌uava工程,使用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相關(guān)案例積累

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

          導(dǎo)航

          統(tǒng)計(jì)

          公告

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

          常用鏈接

          留言簿

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 讷河市| 房山区| 大方县| 望都县| 西宁市| 浮梁县| 丰原市| 石景山区| 蕉岭县| 铁岭市| 新龙县| 阆中市| 马边| 天峻县| 浑源县| 忻州市| 武平县| 顺义区| 油尖旺区| 沈阳市| 瑞昌市| 右玉县| 道孚县| 周口市| 鹤岗市| 富宁县| 勃利县| 托里县| 桐梓县| 连云港市| 木兰县| 仁布县| 方正县| 安乡县| 社会| 德兴市| 邹平县| 姚安县| 碌曲县| 平罗县| 德昌县|