您的位置:首页 > 职场人生

黑马程序员 用Map记录一个字符串里每个字母出现的次数

2013-06-19 21:28 363 查看
---------------------- android培训java培训、期待与您交流! --------------------

import java.util.*;
/*
* 一个字符串cvfghjknbvcvbghn
* 记录每个字母出现的次数
* a(1)b(2)...
* 字母和他的次数就可以组成一对,存在map中
*
* 思路:
* 字符串转字符数组
* 循环查每一个字符
* 要按字母顺序打印,所以treemap,再弄出keyset
* 字符到keyset找,null就给value赋1,有value就把他加1
* */
class NumDemo
{
public static void main(String[] a)
{
String str="vcsgbco---ahndsbvuabnv";

getTimes(str);
}
public static void getTimes(String str)
{
char[] s=str.toCharArray();//转成字符数组
TreeMap<Character,Integer> tm = new TreeMap<Character,Integer>();//定义Map容器,键是字符,值是每个字符出现的次数
for(int i=0;i<s.length;i++)//逐个查字符
{
if (!(s[i]>='a'&&s[i]<='z'||s[i]>='A'&&s[i]<='Z'))//只查找字母
continue;//非字母就去下一个循环,找下一个字符
Integer v = tm.get(s[i]);//在一个查一个字符时定义好v变量装他的次数
if (v==null)//如果这个字符没出现过
tm.put(s[i], 1);//就说明现在是第一次出现,v为1
else//如果这个字符出现过
{
v=v+1;//v自增
tm.put(s[i],v);//把v存到Map里这个字符键对应的地方
}
}
show(tm);//调用show方法打印这个TreeMap里的内容
}
public static <K,V> void show(TreeMap<K,V> tm)//泛型方式定义参数
{
Set<Map.Entry<K,V>> mes=tm.entrySet();//取出映射关系
Iterator<Map.Entry<K,V>> it=mes.iterator();//把映射关系用迭代器表示
while(it.hasNext())
{
Map.Entry<K,V> rela=it.next();//迭代器逐个拿到这些映射关系
K key=rela.getKey();//取出这个映射关系里的键
V value= rela.getValue();//取出这个映射关系里的值
sop(key+"("+value+")");//打印
}
}
public static void sop(Object b)
{
System.out.println(b);
}
}

----------------------
ASP.Net+Android+IOS开发、.Net培训、期待与您交流! ----------------------
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐