昨天忘记做了,今天来补上
-
- import java.util.Iterator;
- import java.util.Map;
- import java.util.Set;
- import java.util.TreeMap;
-
- public class Demo5 {
-
- /**
- *
- * 给定一个字符串,包含了空格等标点符号,要你计算出出现次数最多的字母和该字母出现的次数。
- */
- public static void main(String[] args) {
- TreeMap<Character,Integer> hm=new TreeMap<Character,Integer>();//构造一个有序集合TreeMap
- String str="asdjkasojd8 asd,./';'][[':::lmcsuijhwiodasfhjkbg";
- int leng=str.length(); //避免每次for循环计算字符串长度
- for(int i=0;i<leng;i++){ //遍历字符串
- char key=str.charAt(i);
- Integer value=hm.get(key);
- if(value==null){ //如果该字符没有出现,将值value设置为1
- hm.put(key,1); //自动装箱为Character与Integer
- }else{
- value++;
- hm.put(key,value); //键所对应的值+1
- }
- }
-
- //将所有出现的字符存入TreeMap后,开始便利TreeMap查找字符最多出现的次数
- Set<Map.Entry<Character, Integer>> set=hm.entrySet();
- Iterator<Map.Entry<Character, Integer>> it=set.iterator();
- int maxValue = 0; //初始化最大键
- char maxKey = 0 ; //初始化最大值
- while(it.hasNext()){ //遍历TreeMap查找最大键值对
- Map.Entry<Character, Integer> me=it.next();
- char key=me.getKey();
- int value=me.getValue();
- if(value>=maxValue){
- maxValue=value;
- maxKey=key;
- }
- System.out.println(key+"出现"+value+"次"); //输出个个字符出现的次数
- }
- System.out.println("最多出现的字符时"+maxKey + ",它出现的次数为" + maxValue);//输出最大键值对
- }
-
- }
-
复制代码 |