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

---------------------- 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培训、期待与您交流! ----------------------

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值