黑马程序员技术交流社区

标题: <TreeMap练习>统计字符串里每个字母出现的次数 [打印本页]

作者: yuanjun52306    时间: 2015-12-8 10:51
标题: <TreeMap练习>统计字符串里每个字母出现的次数
  1. package com.heima;

  2. import java.util.Iterator;
  3. import java.util.Map;
  4. import java.util.TreeMap;

  5. /**
  6. *
  7. * 需求:
  8. * 获取一个字符串中,每个字母出现的次数,打印格式如:a(2)b(1)...
  9. *
  10. * 思路:
  11. * 1、首先要选择一个容器,因为要存储键值对,所以用Map。又要有序,所以用TreeMap
  12. * 2、先将字符串转换成字符数组,然后遍历数组,用每一个字母作为键去Map集合里查找
  13. * 如果字母不存在,则将字母作为键,1作为值存储到Map集合中
  14. * 如果字母存在,则将对应值取出+1,再将结果存进去(键相同时值会覆盖)
  15. * 3、遍历Map集合
  16. *
  17. */
  18. public class Demo6 {
  19.         public static void main(String[] args){
  20.                 String str = "uuasbnaaiuq";
  21.                 String s = getCharCount(str);
  22.                 System.out.println(s);
  23.         }
  24.        
  25.         public static String getCharCount(String str){
  26.                 //将字符串转换成字符数组
  27.                 char[] chs = str.toCharArray();
  28.                 //定义Map集合表
  29.                 Map<Character,Integer> map = new TreeMap<Character,Integer>();
  30.                 //遍历数组
  31.                 for(int i = 0 ; i < chs.length ; i++){
  32.                        
  33.                         int count = 0;
  34.                         char c = chs[i];
  35.                        
  36.                         if(!(c>='a' && c<='z' || c>='A' && c<='Z')){
  37.                                 continue;
  38.                         }
  39.                        
  40.                         //将数组中的字母作为键去查Map表
  41.                         Integer value = map.get(c);
  42.                        
  43.                         //判断值是否为null
  44.                         if(value!=null){
  45.                                 count = value + 1;
  46.                         }else{
  47.                                 count = 1;
  48.                         }
  49.                        
  50.                         map.put(c, count);
  51.                 }
  52.                 //遍历Map集合,输出指定格式的字符串
  53.                 return(mapToString(map));
  54.                
  55.         }
  56.        
  57.         public static String mapToString (Map<Character,Integer> map){
  58.                 StringBuilder sb = new StringBuilder();
  59.                 for(Iterator<Character> it = map.keySet().iterator();it.hasNext();){
  60.                         Character key = it.next();
  61.                         Integer value = map.get(key);
  62.                        
  63.                         sb.append(key+"("+value+")");
  64.                 }
  65.                 return sb.toString();
  66.         }

  67. }
复制代码







欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2