【需求】:获取字符串中各个字母出现的次数
打印格式:a(2)b(1)...
【思路】:
(1)将字符串转换成字符数组
(2)定义一个map集合(因为打印结果有顺序,所以采用TreeMap集合)
(3)遍历字符数组,取value
返回null,将字母和1添加进集合
返回非null,将字符和value+1添加集合
【代码】:
import java.util.*;
class MapDemo
{
public static void main(String[] args)
{
String str="goodgoodstudydaydayup";
TreeMap<Character,Integer> result=countChar(str);
Set<Map.Entry<Character,Integer>> entrySet=result.entrySet();
Iterator<Map.Entry<Character,Integer>> it=entrySet.iterator();
StringBuilder sb=new StringBuilder();
while(it.hasNext()){
Map.Entry<Character,Integer> me=it.next();
Character ch=me.getKey();
Integer value=me.getValue();
sb.append(ch+"("+value+")");
}
System.out.println(sb.toString());
//a(2)d(5)g(2)o(4)p(1)s(1)t(1)u(2)y(3)
}
public static TreeMap countChar(String str){
char[] chs=str.toCharArray();
TreeMap<Character,Integer> tm=new TreeMap<>();
for(int i=0;i<chs.length;i++){
Integer value=tm.get(chs[i]);
if(tm.get(chs[i])==null){
tm.put(chs[i],1);
}else{
value=value+1;
tm.put(chs[i],value);
}
}
return tm;
}
}
【输出】: