- 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();
- }
- }
复制代码
|
|