JavaSE基础(108) Map应用之求一个字符串中字符出现的次数?并打印出出现次数最多的那对键值对

求一个字符串中 字符出现的次数,  并打印出 出现次数最多的那对 键值对
  思路:
    ①:通过 char[] toCharArray() 将字符串保存到字符数组中
    ②:遍历字符数组
    ③:将数组里的每一个不重复的字符作为键保存到map中,将每一个相同字符的数量作为值保存到map中
    ④:求出出现次数最多的键值对

/**
 * 求一个字符串中 字符出现的次数?  并打印出 出现次数最多的那对键值对
 * 思路:
 *  ①:通过 char[] toCharArray() 将字符串保存到字符数组中
 *  ②:遍历字符数组
 *  ③:将数组里的每一个不重复的字符作为键保存到map中,将每一个相同字符的数量作为值保存到map中
 *  ④:求出出现次数最多的键值对
 * @author 郑清
 */
public class Demo {

	public static void main(String[] args) {
		String str = "aaaabbbccccdddddddeeeffff";
		Map count = getCount(str);
		printMax(count);
	}

	public static Map getCount(String str) {
		char[] charArray = str.toCharArray();
		Map map = new HashMap();
		for (char c : charArray) {
			if(map.containsKey(c)){//boolean containsKey(Object  key) : 判断键是否存在
				/*
				 * map存数据之前,如果键不存在则返回null 这里强转成Integer类型保存每一个相同字符的个数  
				 *               如果键存在则加1
				 */
				map.put(c, (Integer)map.get(c)+1);
				continue;
			}
			map.put(c, 1);
		}
		System.out.println(map);
		return map;
	}
	//求出现字符次数最多的键值对
	public static void printMax(Map map) {
		Collection values = map.values();
		int max = 0;
		//方式①
		/*for (Object object : values) {//经过for循环,已经取到了,里面的Map里面值最大的那一个
			Integer value = (Integer)object;
			if(max<value){
				max = value;
			}
		}
		System.out.println(max);*/
		
		//方式②
		/*Object[] array = values.toArray();
		Arrays.sort(array);//Arrays工具类方法sort自动升序排序
		max = (Integer)array[array.length-1];
		System.out.println(max);*/
		
		//方式③
		max = (Integer)Collections.max(values);
		//System.out.println(max);
		
		Set entrySet = map.entrySet();
		for (Object object : entrySet) {
			Entry entry = (Entry)object;
			if((Integer)entry.getValue()==max){
				System.out.println(object);
			}
		}
	}

}

运行结果图:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

郑清

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值