黑马程序员技术交流社区

标题: 一道不错的编程题 [打印本页]

作者: 韩侠    时间: 2015-7-27 22:27
标题: 一道不错的编程题
"cbxzbvavdvgd"获取字符串中,每一个字母出现次数:"a(1)b(2)c(1)d(2)g(1)v(3)x(1)z(1)"

public class TreeMapTest {
public static void main(String[] args) {
  String string="cbxzbvavdvgd";
  char[]ch=string.toCharArray();//把字符串转换为字符数组
  //创建map集合<每个字符,字符的个数>
  Map<Character, Integer>map=new TreeMap<Character, Integer>();
  //遍历字符数组,获取到每一个字符。
  for (char c : ch) {
   //得到键对应的值
   Integer integer=map.get(c);
   //如果得到的值为null,就记为一次
   //否则,就累加
   if (integer==null) {
    map.put(c, 1);
   }else {
    map.put(c, ++integer);
   }
  }
  System.out.println(map);//{a=1, b=2, c=1, d=2, g=1, v=3, x=1, z=1}
  //拼接
  StringBuffer stringBuffer=new StringBuffer();
  Set<Character>set=map.keySet();//得到键
  for (Character character : set) {
   Integer integer=map.get(character);//通过键得到对应的值
   //拼接
   stringBuffer.append(character).append("(").append(integer).append(")");
  }
  //得到字符串
  String sb=stringBuffer.toString();
  System.out.println(sb);//a(1)b(2)c(1)d(2)g(1)v(3)x(1)z(1)
}
}


作者: 胡能军    时间: 2015-7-27 22:29
写的很不错的,谢谢分享好的知识
作者: 郑转转    时间: 2015-7-27 22:31
谢谢分享 赞一个
作者: longlong    时间: 2015-7-27 22:31
赞一个,加油
作者: 刘远东    时间: 2015-7-27 22:32
不错啊. 每行代码清晰易懂/ 一看就知道了.
作者: 亦如梦幻泡影    时间: 2015-7-27 22:39
拼接应该可以直接stringBuffer.append(character+"("+integer+")");这样吧,用链式编程有点长啊
作者: lishang    时间: 2015-7-27 22:42
赞一个!
作者: 鹰隼展翼    时间: 2015-7-27 22:59
写的不错赞一个




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