牛骨文教育服务平台(让学习变的简单)
博文笔记

获取字符串中字母出现的次数

创建时间:2016-10-16 投稿人: 浏览次数:318
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import java.util.TreeMap;

/*
 * 练习:
 * abccdefffffg获取字符串中字母出现的次数。
 * 希望打印结果;a(1)b(2)……
 * 通过结果发现,每个字母多有对应的次数。
 * 说明字母和次数之间都有映射关系。
 * 思路:
 * 1.将字符串转换成字符数组,因为要对每一个字母进行操作。
 * 2.定义一个map结合,因为打印结果有顺序,所以使用treeMap集合。
 * 3.便利字符数组。
 * 将每一个字母作为健做查询map集合。
 * 如果返回null,说明该字母集合已经存在并且有对应的值。
 * 4.将map集合中的数据制定的字符串形式返回。
 *
 *
 *
 */
public class MapTest3 {

    public static void main(String[] args) {
    // TODO Auto-generated method stub
    String s=charCount("abcdddddadefgf");
    System.out.println(s);
    }
public static String charCount(String str)
{
    char[] chs=str.toCharArray();
    TreeMap<Character,Integer> tm=new TreeMap<Character,Integer>();
    for(int i=0;i<chs.length;i++)
    {
    Integer value=tm.get(chs[i]);
    if(value==null)
    tm.put(chs[i], 1);
    else
    {
    value=value+1;
    tm.put(chs[i], value);
    }
}
    //System.out.println(tm);
    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+")");
    }
    
    return sb.toString();
    }
}

声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。