需求:查找字符串中重复字符及次数,并输出出现次数最多的字符及次数
例如:"ddadgjioajgial"
输出:出现最多次数的是:a次数是:3
思路:用hashmap的键值对去存,key存字符,value存出现的次数,遍历的时候作比较
可优化的点:重复次数一样的全都输出
注意事项:对象和包装类的比较不能用大于小于号,要么重写compareTo方法,要么转型
package Practise;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
/**
* 统计字符串中重复字符及次数,还有输出最多次数的字符
*/
public class StringNum {
public static void main(String[] args) {
String a = "ddadgjioajgial";
char[] b = a.toCharArray();
HashMap m = new HashMap();
for(Character i:b){
//采用哈希map去存字符和出现次数
if(m.containsKey(i)){
int temp = (int) m.get(i);//注意这里m.get后是对象,不转为int,无法使用+号
m.put(i,temp+1);
}else {
m.put(i,1);
}
}
System.out.println(m);
//hashmap的遍历
Set<Map.Entry<Character,Integer>> set1 = m.entrySet();
//找到最大的value和字符
int temp = 0;
Character value = null;
for(Map.Entry k:set1){
int va = (int)k.getValue();
if(va>temp){//如果不转型,包装类之间的比较不能用><号,要用compareTo方法
temp = (int) k.getValue();
value = (Character) k.getKey();
}
}
System.out.println("出现最多次数的是:"+value+"次数是:"+temp);
}
}
输出为: