题目:求给定的一串字符串中,统计各个字符出现的次数,如果次数一样,输出第一次的字符和次数
package com.thread.test.ch1;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.Set;
public class FindMaxCountTest {
public static void main(String[] args) {
String test="aaaabbcddddeeee";
char[] array=test.toCharArray();
//统计字符出现次数
LinkedHashMap<Character,Integer> charNumMap=CountCharNum(array);
//获取最大次数的字符和次数
char maxCountMap= FindMaxCount(charNumMap);
}
public static LinkedHashMap<Character,Integer> CountCharNum(char[] array){
LinkedHashMap<Character, Integer> hashMap = new LinkedHashMap<Character, Integer>();
if (!(array ==null || array.length==0)){
for (int i = 0; i < array.length; i++) {
// if (null!=hashMap.get(array[i])){
if (hashMap.containsKey(array[i])){
hashMap.put(array[i], hashMap.get(array[i]) + 1);
}else {
hashMap.put(array[i],1);
}
}
}
return hashMap;
}
public static char FindMaxCount(LinkedHashMap<Character,Integer> charNumMap){
Set<Character> keySet=charNumMap.keySet();
Iterator key_iter=keySet.iterator();
Character maxChar = (Character) key_iter.next();
Integer maxValue=charNumMap.get(maxChar);
while (key_iter.hasNext()){
Character tmp=(Character) key_iter.next();
//使用linkedhashmap获得有序的数据,如果这里写成=号就表示最后一次出现的字符,没有=号就是第一次出现的字符
if (maxValue<charNumMap.get(tmp)){
maxChar=tmp;
maxValue=charNumMap.get(tmp);
}
}
System.out.println("首次出现最多次数的字符为:"+maxChar+" 它的次数为:"+maxValue);
return maxChar;
}
}