計算字符串中的各個字母的個數


package Set;

import java.util.Iterator;
import java.util.Map;
import java.util.TreeMap;

/*
 * 練習:
"dadfadfaafadsb"獲取該字符串中,每一個字母出現的次數。
要求打印的結果是:a(5)b(1)...;
思路:對於結果的分析發現,字母和次數之間存在着映射關系。而且這種關系很多。
很多就需要存儲,能存儲映射關系的容器有數組和Map集合。
關系一方式有序編號嗎?沒有!
那就是使用Map集合。又發現可以保證唯一性的一方具備着順序如a b c...
所以可以使用TreeMap集合。
這個集合最終應該存儲的是字母和次數的對應關系
1,因為操作的是字符串的字母,所以先將字符串變為數組。
2,遍歷字符該數組,用每一個字母作為鍵去查這個表
如果字母鍵不存在,那就將該字母作為鍵1作為值存儲到map集合中
鍵相同值會覆蓋。這樣就記錄住了該字母的次數。
3,遍歷結束,map集合就記錄所有字母的出現的次數
 */
public class Test {
    public static void main(String[] args) {
        String str="dadfadfaafadsb";
        String s=getCharCount(str);
        
        System.out.println(s);
        
    }

    private static String getCharCount(String str) {
        // TODO Auto-generated method stub
        char[] c=str.toCharArray();
        Map<Character,Integer> m=new TreeMap<Character,Integer>();
        for(int i=0;i<c.length;i++){
            Integer value=m.get(c[i]);
            if(value==null){
                m.put(c[i], 1);//如果沒有此元素,則添加值為1
            }else{
                m.put(c[i], value+1);//否則添加值為value+1
            }
        }
        return mapToString(m);//轉換格式
    }
    public static String mapToString(Map<Character,Integer> map){
        StringBuilder sb=new StringBuilder();
        Iterator<Character> it=map.keySet().iterator();
        while(it.hasNext()){
            Character key=it.next();
            Integer value=map.get(key);
            sb.append(key+"("+value+")");
            
        }
        return sb.toString();
    }

}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM