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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 韩侠 中级黑马   /  2015-7-27 22:27  /  540 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

"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)
}
}

7 个回复

倒序浏览

回帖奖励 +10

写的很不错的,谢谢分享好的知识
回复 使用道具 举报
谢谢分享 赞一个
回复 使用道具 举报
赞一个,加油
回复 使用道具 举报
不错啊. 每行代码清晰易懂/ 一看就知道了.
回复 使用道具 举报
拼接应该可以直接stringBuffer.append(character+"("+integer+")");这样吧,用链式编程有点长啊
回复 使用道具 举报
赞一个!
回复 使用道具 举报
写的不错赞一个
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马