>  기사  >  Java  >  자바 실전은 문자열을 주고, 등장하는 한자나 문자의 개수를 센다.

자바 실전은 문자열을 주고, 등장하는 한자나 문자의 개수를 센다.

无忌哥哥
无忌哥哥원래의
2018-07-20 10:56:182431검색

더 이상 말도 안 되는 소리는 그만하고 바로 코드로 넘어가겠습니다

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만큼 효율적이지는 않습니다

위 내용은 자바 실전은 문자열을 주고, 등장하는 한자나 문자의 개수를 센다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.