取出一个字符串中字母出现的次数。如:字符串:"abcde%^kka27qoq" ,输出格式为:a(2)b(1)k(2)... |
- package itheima.day16;
-
- import java.util.Iterator;
- import java.util.Map;
- import java.util.Set;
- import java.util.TreeMap;
-
- //练习:获取一个字符串中字母出现的次数,希望打印结果为:a(1)b(2)...
- //思路:1、将字符串转换成字符数组,因为要对每一个字母进行操作;
- // 2、定义一个map集合,因为打印结果的字母有顺序,TreeMap;
- // 3、遍历字符数组,将每一个字母作为键去查map集合,如果返回null,
- // 存入;如果不是null,则对应的值加1。
- // 4、将map集合中的数据变成指定的字符串形式返回。
- public class MapTest3 {
-
- public static void main(String[] args) {
-
- String str ="54653gfghfhvfagfgafsdg";
- System.out.println(charCount(str));
- }
-
- public static String charCount(String str){
-
- // 1、将字符串转成字符数组
- char[] chs = str.toCharArray();
-
- // 2、键值对,需排序,TreeMap
- TreeMap<Character,Integer> tm = new TreeMap<Character,Integer>();
- // 3、遍历字符数组,将每个字符、出现次数 存入到TreeMap集合中
- int count =0;
- for(int x=0;x<chs.length;x++){
- if(!(chs[x]>='a'&& chs[x]<='z' || chs[x]>='A'&&chs[x]<='Z'))//非字母,不存
- continue;
- Integer value = tm.get(chs[x]);
- if(value!=null)
- count = value;
- count++;
- tm.put(chs[x], count);
- count=0;
- }
-
- // 4、取出TreeMap集合中的元素,存入到StringBuilder容器中
- StringBuilder sb = new StringBuilder();
-
- Set<Map.Entry<Character,Integer>> entrySet = tm.entrySet();
- Iterator<Map.Entry<Character,Integer>> it = entrySet.iterator();
- while(it.hasNext()){
- Map.Entry<Character, Integer> me = it.next();
- Character ch = me.getKey();
- Integer value = me.getValue();
- sb.append(ch+"("+value+")");
- }
- // 5、以字符串形式返回
- return sb.toString();
- }
- }
|