求一个字符串中 字符出现的次数, 并打印出 出现次数最多的那对 键值对
思路:
①:通过 char[] toCharArray() 将字符串保存到字符数组中
②:遍历字符数组
③:将数组里的每一个不重复的字符作为键保存到map中,将每一个相同字符的数量作为值保存到map中
④:求出出现次数最多的键值对
/**
* 求一个字符串中 字符出现的次数? 并打印出 出现次数最多的那对键值对
* 思路:
* ①:通过 char[] toCharArray() 将字符串保存到字符数组中
* ②:遍历字符数组
* ③:将数组里的每一个不重复的字符作为键保存到map中,将每一个相同字符的数量作为值保存到map中
* ④:求出出现次数最多的键值对
* @author 郑清
*/
public class Demo {
public static void main(String[] args) {
String str = "aaaabbbccccdddddddeeeffff";
Map count = getCount(str);
printMax(count);
}
public static Map getCount(String str) {
char[] charArray = str.toCharArray();
Map map = new HashMap();
for (char c : charArray) {
if(map.containsKey(c)){//boolean containsKey(Object key) : 判断键是否存在
/*
* map存数据之前,如果键不存在则返回null 这里强转成Integer类型保存每一个相同字符的个数
* 如果键存在则加1
*/
map.put(c, (Integer)map.get(c)+1);
continue;
}
map.put(c, 1);
}
System.out.println(map);
return map;
}
//求出现字符次数最多的键值对
public static void printMax(Map map) {
Collection values = map.values();
int max = 0;
//方式①
/*for (Object object : values) {//经过for循环,已经取到了,里面的Map里面值最大的那一个
Integer value = (Integer)object;
if(max<value){
max = value;
}
}
System.out.println(max);*/
//方式②
/*Object[] array = values.toArray();
Arrays.sort(array);//Arrays工具类方法sort自动升序排序
max = (Integer)array[array.length-1];
System.out.println(max);*/
//方式③
max = (Integer)Collections.max(values);
//System.out.println(max);
Set entrySet = map.entrySet();
for (Object object : entrySet) {
Entry entry = (Entry)object;
if((Integer)entry.getValue()==max){
System.out.println(object);
}
}
}
}
运行结果图: