java给出字符串,统计汉字或字母出现的个数

package test;

import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Stack;
import java.util.Vector;

import com.sun.org.apache.bcel.internal.generic.IRETURN;

public class Test {
 
        public static void main(String[] args)   {
         
            String str = "中国你好吗>国你好吗>中国国家国国国国aabb;;;";
              Map<Character,Integer> map = new HashMap<Character,Integer>();
              char[] ch = str.toCharArray();//将字符串转为数组
              
              /*将字符和出现的个数存入到Map*/
              for(char c:ch){
               if(map.get(c)==null){
                map.put(c, 1);//为空的话值为1
               }
               else{
                Integer in = map.get(c);//得到的value值至少为1
                in++;
                map.put(c, in);
               }
              }
              
              
             /* 使用for-each遍历
              for (Character c : map.keySet()) {
                  
                  System.out.println(map.get(c));
                
            }*/
              
              //使用迭代器和entrySet遍历
              Iterator<Entry<Character, Integer>> iterator=map.entrySet().iterator();
              
              Integer count =Collections.max(map.values());//出现次数最多的值
              Character character = null;//存放次数最多的key
              
              while(iterator.hasNext()) {
                  Map.Entry<Character, Integer> entry=(Map.Entry<Character, Integer>)iterator.next();
                  
                  System.out.println(entry.getKey()+"    "+entry.getValue());
                  
                  //得到出现次数最多的值的key
                  if(entry.getValue().equals(count)) {
                      character=entry.getKey();
                  }
                  
              }
              
              System.out.println("出现次数最多的是:"+character+"出现次数为"+count);
            
        }        
            
}
 

此题当然可以使用keyset()遍历,但是没有EntrySet效率高

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值