以“aaabbbccsdlfhhk”为例
要求输出样式为a(3)b(3)…
import java.util.Iterator;
import java.util.Map;
import java.util.TreeMap;
public class Demo1 {
public static void main(String[] args) {
String str="aaabbbccsdlfhhk";
String s=getCharCount(str);
System.out.println(s);
}
private static String getCharCount(String str) {
//1.将字符串变为字符数组
char[] chs=str.toCharArray();
//2.创建map集合
Map<Character,Integer> map=new TreeMap<Character,Integer>();
//3.遍历
for(int i=0;i<chs.length;i++){
if(!(chs[i]>='a'&&chs[i]<='z')){
continue;
}
//将数组中的字母作为键,查map表
Integer value=map.get(chs[i]);
int count=1;//第一次的值
//判断值是否为空
if(value!=null){
count=value+1;
}
map.put(chs[i], count);
/*if(value==null){
map.put(chs[i], 1);
}else{
map.put(chs[i], value+1);
}*/
}
return mapToString(map);
}
private static String mapToString(Map<Character, Integer> map) {
StringBuilder sb=new StringBuilder();//线程不安全,高效
Iterator<Character> it=map.keySet().iterator();
while(it.hasNext()){
Character key=it.next();
Integer value=map.get(key);
sb.append(key+"("+value+")");
}
return sb.toString();
}
}
运行结果:
a(3)b(3)c(2)d(1)f(1)h(2)k(1)l(1)s(1)