- package mymap;
- import java.util.TreeMap;
- public class MapTest1 {
- public static void main(String[] args) {
- //定义字符串"adjjakfhbakbfjhdasvgfjaa",获取没个字母出现的次数
- String str = "adj123[]jakfhbakbfjhdasvgfjaa";
- String str1 = myMaptest1(str);
- System.out.println(str1);
- }
-
- public static String myMaptest1(String str) {
- // 将字符串转换成字符数组
- char[] ch = str.toCharArray();
- //定义TreeMap集合,用来存储字母(键)和字母出现的次数(值)
- TreeMap<Character,Integer> map = new TreeMap<Character,Integer>();
- //遍历数组
- for (int i = 0; i < ch.length; i++) {
- //判断是否是字母
- if(!(ch[i]>='a'&&ch[i]<='z'||ch[i]>='A'&&ch[i]<='Z')){
- continue;
- }
-
- //获取字母键对应的值出现的次数
- Integer value = map.get(ch[i]);
-
- //方法一
- // //判断键的值出现的次数,null则为第一次出现
- // if(value==null){
- // map.put(ch[i], 1);
- // }else {
- // value++;
- // map.put(ch[i], value);
- // }
-
-
- //方法二
- //定义变量,用来记录次数
- int count=0;
- if(value!=null){
- count=value;
- }
- count++;
- map.put(ch[i], count);
- }
- return mapToString(map);
- }
- //達到a(2)b(3)c(4)效果
- private static String mapToString(TreeMap<Character, Integer> map) {
- // 要達到輸出效果,用StringBuffer--单线程最好用StringBuilder
- StringBuilder sb = new StringBuilder();
- //遍历map集合
- for(Character key : map.keySet()){
- Integer value = map.get(key);
- sb.append(key+"("+value+")");
- }
- return sb.toString();
- }
- }
复制代码 |
|