1. 程式人生 > >java練習之獲取字串中每個字元出現的次數

java練習之獲取字串中每個字元出現的次數

練習題:輸入某個字串,獲取該字串中每個字元出現的次數。
思路:字元和次數之間存在對映關係。使用TreeMap集合。
由於操作字元的關係,先將字串轉化為字元陣列。對字元陣列進行遍歷,用每一個鍵作為key去map中查詢。如果該字母鍵不存在,就將該字母作為鍵,值為1儲存到map集合中。如果該字母鍵存在,就將該字母對應的值加1,並將加1後的值儲存到map中,這樣就會覆蓋原來的值,從而記錄字母出現的次數。
 

程式碼如下:

public class MapTest {
      public static void main(String[] args) {
           String str = "udhuchfuefv";
           String s = getStringCount(str);
           System.out.println(s);
           }
      public static String getStringCount(String str) {
            //將字串轉化為字元陣列
            char[] ss = str.toCharArray();
             //定義map集合
            Map<Character,Integer> map = new TreeMap<Character,Integer>();
             //遍歷字元陣列
            for (int i = 0; i < ss.length; i++) {
                   Integer value =  map.get(ss[i]);  
             //使用字元陣列中的 元素作為key,去查詢對應的value
            if(value == null)
               {map.put(ss[i], 1); //如果該字元對應的value為0,置1}
            else
                {map.put(ss[i], value+1); //如果value值不為空,自加1}
           }
          return mapToString(map);
          }
      public static String mapToString(Map<Character, Integer> map) {
           StringBuilder sbu = new StringBuilder();
           Set<Character> key = map.keySet();
           Iterator it = key.iterator();
           while(it.hasNext())
           {
              Character k = (Character)it.next();
              Integer value = map.get(k);
             sbu.append(k+"("+value+")");
           }
               return sbu.toString();
         }
}