黑马程序员技术交流社区

标题: Map集合问题 [打印本页]

作者: ermao_qu    时间: 2015-10-31 21:47
标题: Map集合问题
   问题:
   取出一个字符串中字母出现的次数。如:字符串:"abcdekka27qoq" ,
* 输出格式为:a(2)b(1)k(2)...怎么写


作者: zzwzz    时间: 2015-10-31 22:24
  1. /**
  2. * 需求:统计输入的字符串,如 "abcaab"  以a(3)b(2)c(1)的形式输出
  3. * 分析:        1 字符与字符个数属于对应关系,可用Map<String,Integer>
  4. *                         2 输出字母是自然排序,所以考虑使用TreeMap
  5. */
  6. package fmi1;

  7. import java.util.Scanner;
  8. import java.util.Set;
  9. import java.util.TreeMap;

  10. public class CharacterCount {

  11.         public static void main(String[] args) {
  12.                 // TODO Auto-generated method stub
  13.                 //建立接收键盘输入的字符串
  14.                 System.out.println("请输入字符串:");
  15.                 String line = new Scanner(System.in).nextLine();
  16.                 //建立集合Map
  17.                 TreeMap<Character, Integer> tm = new TreeMap<Character,Integer>();
  18.                 //将输入字符串转成数组
  19.                 char[] chs = line.toCharArray();
  20.                 //遍历字符串,将字符存入集合Map,若字符key已存在,则value加1,否则,value = 1
  21.                 for(char ch:chs        ){
  22.                         //根据键获取集合的值,判断字符的个数
  23.                         Integer value = tm.get(ch);
  24.                         if(null == value){//没有对应键值对
  25.                                 value = 1;
  26.                         }
  27.                         else
  28.                                 value++;
  29.                         //将更新后的键值关系存至Map
  30.                         tm.put(ch, value);
  31.                 }
  32.                 //遍历Map,输出键值对
  33.                 StringBuilder sb = new StringBuilder("");
  34.                 Set<Character> s = tm.keySet();
  35.                 for(Character ch:s){
  36.                         sb.append(ch).append("(").append(tm.get(ch)).append(")");
  37.                 }
  38.                 System.out.println(sb.toString());
  39.         }
  40. }
复制代码

作者: dai2686779    时间: 2015-10-31 22:48
666666666666666666
作者: 刻骨铭心    时间: 2015-10-31 22:57
前两天学过,哈哈
作者: tanzhixue    时间: 2015-10-31 23:57
利用Map集合键唯一来实现。先将字符串转换成字符数组 然后判断Map中是否有这个键 没有就存进来 有就把值+1
作者: 黑夜中那颗星    时间: 2015-11-1 00:36
这个很简单,老毕的视频里有讲过这个题目




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