需求:计算一个字符串中各字符的出现次数,例如:“dsaiadiewbnashd” 输出格式:i(2)b(1)d(3)a
(3)....
思路:
1.先把字符串转成字符数组.
2.看输出格式有两项组成,字母和次数,字母唯一(key),次数可变(value),
定义一个Map集合用以存储.
3.遍历字符数组,在此过程中判断字符是否已经存在于Map中
如果不存在,将此字母以次数1存入集合
如果已存在,将此字母次数加1后存入集合
4.得出的集合元素都是字符,需要使用StringBuffer进行拼接,拼接后转成字符串类型输出.
*/
import java.util.*;
public class CountString
{
public static void main(String[] args)
{
String s = "djiewdjakjwqiasb";
char [] chs = s.toCharArray();
TreeMap<Character,Integer> tm = new TreeMap<>();
for(char c : chs)
{
Integer i = tm.get(c);//通过key获取value
if(i == null)
{
tm.put(c,1);
}
else
{
i++;
tm.put(c,i);
}
}
StringBuffer sb = new StringBuffer();
Set<Character> set = tm.keySet();
for(Character ch : set)
{
Integer k = tm.get(ch);
sb.append(ch).append("(").append(k).append(")");
}
System.out.println(sb.toString());
}
}
以上程序输出结果:a(2)b(1)d(2)e(1)i(2)j(3)k(1)q(1)s(1)w(2)
感觉有点麻烦,请问各位大神还有其他较为便捷的方式吗!!! |
|