A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

© 不怕黑人 中级黑马   /  2015-7-25 21:52  /  159 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. package fuxi1;

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

  5. /**
  6. * 题目:"jakldfjasldfj"获取一个字符串中每个字母出现的次数。
  7. * 希望打印的结果为:a(2)d(1)...
  8. * 思路:由打印结果可知,这是键值存在的数据,要用到Map集合。而且字母是按顺序排列的要用到TreeMap集合进行排序。
  9. *@author XiaLei
  10. */
  11. public class Day16Test6 {

  12.         public static void main(String[] args) {

  13.                 String str = "jakldfj66asldfj";
  14.                 char[] arr = str.toCharArray();//将字符串变成字符数组。
  15.                 TreeMap<Character,Integer> tm = new TreeMap<Character,Integer>();
  16.                 int count = 0;
  17.                 for(int x = 0;x<arr.length;x++){
  18.                         char ch = arr[x];
  19.                         String reg = "[a-zA-Z]";//利用正则表达式判断元素是否为字母。
  20.                         if(!(String.valueOf(ch).matches(reg)))
  21.                                 continue;
  22.                                
  23.                         if(tm.containsKey(ch)){
  24.                                 Integer value = tm.get(ch);
  25.                                 count = value;//如果有相同的键(字母)则将对应的值赋给count。
  26.                         }
  27.                         count++;
  28.                         tm.put(ch,count);
  29.                         count = 0;//将计数器清零,这一点很容易出错,应牢记。
  30.                 }
  31.                 Set<Map.Entry<Character,Integer>> s = tm.entrySet();
  32.                 for(Iterator<Map.Entry<Character,Integer>> it = s.iterator(); it.hasNext();){
  33.                         Map.Entry<Character,Integer> me = it.next();
  34.                         Character key = me.getKey();
  35.                         Integer value = me.getValue();
  36.                         System.out.print(key+"("+value+")");
  37.                 }
  38.         }
  39. }
复制代码

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马