黑马程序员技术交流社区
标题:
<TreeMap练习>统计字符串里每个字母出现的次数
[打印本页]
作者:
yuanjun52306
时间:
2015-12-8 10:51
标题:
<TreeMap练习>统计字符串里每个字母出现的次数
package com.heima;
import java.util.Iterator;
import java.util.Map;
import java.util.TreeMap;
/**
*
* 需求:
* 获取一个字符串中,每个字母出现的次数,打印格式如:a(2)b(1)...
*
* 思路:
* 1、首先要选择一个容器,因为要存储键值对,所以用Map。又要有序,所以用TreeMap
* 2、先将字符串转换成字符数组,然后遍历数组,用每一个字母作为键去Map集合里查找
* 如果字母不存在,则将字母作为键,1作为值存储到Map集合中
* 如果字母存在,则将对应值取出+1,再将结果存进去(键相同时值会覆盖)
* 3、遍历Map集合
*
*/
public class Demo6 {
public static void main(String[] args){
String str = "uuasbnaaiuq";
String s = getCharCount(str);
System.out.println(s);
}
public static String getCharCount(String str){
//将字符串转换成字符数组
char[] chs = str.toCharArray();
//定义Map集合表
Map<Character,Integer> map = new TreeMap<Character,Integer>();
//遍历数组
for(int i = 0 ; i < chs.length ; i++){
int count = 0;
char c = chs[i];
if(!(c>='a' && c<='z' || c>='A' && c<='Z')){
continue;
}
//将数组中的字母作为键去查Map表
Integer value = map.get(c);
//判断值是否为null
if(value!=null){
count = value + 1;
}else{
count = 1;
}
map.put(c, count);
}
//遍历Map集合,输出指定格式的字符串
return(mapToString(map));
}
public static String mapToString (Map<Character,Integer> map){
StringBuilder sb = new StringBuilder();
for(Iterator<Character> it = map.keySet().iterator();it.hasNext();){
Character key = it.next();
Integer value = map.get(key);
sb.append(key+"("+value+")");
}
return sb.toString();
}
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2